使用 svn+ssh 时设置 SVN 用户名(Eclipse 中的作者名)
Posted
技术标签:
【中文标题】使用 svn+ssh 时设置 SVN 用户名(Eclipse 中的作者名)【英文标题】:Setting SVN username (Author Name in Eclipse) when using svn+ssh 【发布时间】:2009-07-31 14:55:43 【问题描述】:当我在 Eclipse 中提交更改时,svn 将我的作者姓名记录为我第一次在 Eclipse (Alok) 中提交更改时输入的作者姓名。作者姓名是指运行“svn log”或“svn blame”时显示的名称。
但是,当我从命令行提交更改时,作者名称被设置为我用来 ssh 到存储库的用户名 (svnadmin)。使用 svn+ssh 时,有没有办法在命令行中独立于 ssh 用户名设置作者姓名/svn 用户名的等效项?我试过了
svn --username Alok ci
但是在这种情况下用户名被忽略了,并且更改归因于svnadmin。
【问题讨论】:
【参考方案1】:您无法更改 svn+ssh 的用户名是设计使然。如果可以,您将能够将其他人伪装成提交者 - 当 SSH 密钥通常会清楚地表明您自己是提交者时。
所以如果你想用 svn+ssh 显示不同的提交者名称,你需要在服务器上进行一些更改:
-
创建单独的远程用户,并将您的密钥放入您希望作为提交者出现的用户的 authorized_keys 文件中。或者,
将 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 是如何做到的很感兴趣。以上是关于使用 svn+ssh 时设置 SVN 用户名(Eclipse 中的作者名)的主要内容,如果未能解决你的问题,请参考以下文章