【问题标题】:Setting SVN username (Author Name in Eclipse) when using svn+ssh使用 svn+ssh 时设置 SVN 用户名(Eclipse 中的作者名)
【发布时间】:2025-12-11 13:50:01
【问题描述】:

当我在 Eclipse 中提交更改时,svn 将我的作者姓名记录为我第一次在 Eclipse (Alok) 中提交更改时输入的作者姓名。作者姓名是指运行“svn log”或“svn blame”时显示的名称。

但是,当我从命令行提交更改时,作者名称被设置为我用来 ssh 到存储库的用户名 (svnadmin)。使用 svn+ssh 时,有没有办法在命令行中独立于 ssh 用户名设置作者姓名/svn 用户名的等效项?我试过了

svn --username Alok ci 

但是在这种情况下用户名被忽略了,并且更改归因于svnadmin。

【问题讨论】:

    标签: eclipse svn


    【解决方案1】:

    您无法更改 svn+ssh 的用户名是设计使然。如果可以,您将能够将其他人伪装成提交者 - 当 SSH 密钥通常会清楚地表明您自己是提交者时。

    所以如果你想用 svn+ssh 显示不同的提交者名称,你需要在服务器上进行一些更改:

    1. 创建单独的远程用户,并将您的密钥放入您希望作为提交者出现的用户的 authorized_keys 文件中。或者,
    2. 将 command= 行放入 svnadmin 用户的 authorized_keys 文件中。该命令应为/usr/bin/svnserve -t --tunnel-user Alok;还可以选择使用--root 选项。

    【讨论】:

    • 你说的有道理,但是eclipse是怎么做到的呢?它还通过 svn+ssh 作为 svnadmin 连接,但设法将作者名称设置为 Alok。我想我应该仔细看看 eclipse 到底在做什么。
    【解决方案2】:

    一种解决方法是首先通过在 hooks/pre-revprop-change 中放置如下的 shell 脚本来启用修订标签的编辑

    REPOS="$1"
    REV="$2"
    USER="$3"
    PROPNAME="$4"
    
    if [ "$PROPNAME" = "svn:log" ]; then exit 0; fi
    if [ "$PROPNAME" = "svn:author" ]; then exit 0; fi
    exit 1
    

    然后,在提交之后,您可以更改 svn:author

    svn propset --revprop -r1234 svn:author Alok
    

    这并没有解释 Eclipse 如何能够在没有 pre-revprop-change 钩子的情况下在提交时设置 svn:author。这个解决方案有点令人不满意,因为它允许任何用户更改任何提交的 svn:author,如果知道 eclipse 实际在做什么,那就太好了。

    【讨论】:

    • 我也对 Eclipse 是如何做到的很感兴趣。