使用 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 中的作者名)的主要内容,如果未能解决你的问题,请参考以下文章

SSH+SVN搭建及配置

基于svn+ssh:访问svn的部署以及客户端配置

svn认证失败的问题

码云企业版可独立开启 HTTPS+SSH+SVN 任意组合

svn 存储库停止与 svn+ssh 一起工作(但在服务器上本地工作)

在Jenkins中认证和授权svn的用户名和密码报错,求大神指点