SVN显示用户名,而不是用户id

  • 本文关键字:用户 id 显示 SVN svn
  • 更新时间 :
  • 英文 :


所以我们有了这个SVN存储库,在这里提交者的名字被整齐地显示出来,这样更容易跟踪谁做了什么。最近,svn存储库被转移到另一个服务器上,这样当我们检查日志时,我们只能看到作者的用户id。我相信我们可以在服务器上更新SVN的authz或者其他一些设置文件来添加作者的名字。

我想问的是,有没有办法在客户端做到这一点?主要是因为我们没有权限修改SVN服务器设置。有没有一种方法可以让我有一个道具或者其他东西可以让映射显示在日志中。

我使用tortoiseSVN作为SVN客户端

这些Subversion用户id来自哪里?您的Subversion是否像Windows Active Directory那样与LDAP集成,或者这是一个单独的Subversion授权文件?

用户id是否从旧服务器(人们使用他们的名字)更改为当前用户id ?

我能想到两件事:

  • 您通过LDAP使用Windows AD,旧服务器针对用户的cn属性进行验证,而新服务器针对sAMAccountName进行验证。

  • 你的旧服务器有一个post-commit钩子,将svn:author修订属性从用户的登录ID更改为用户的名称。

你还有旧的Subversion服务器吗?您应该看看是否可以在设置中找到差异。


附加评论

谢谢大卫。我将检查,虽然我不确定我是否能够,因为访问限制。你知道我是否可以设置一个客户端道具值,比如set "X123"如"约翰·多"。这样当我查看日志时,所有包含X123的提交者的名字都会显示为John Doe?

svn:author revision属性包含执行提交的用户的名称。你可以把它改成任何你想要的。正如我之前所说的,我见过一些网站使用post-commit钩子来实现这一点。我一点也不喜欢这样做。然而,有些网站似乎选择随机字符串作为用户名。就像你在例子中所说的X123。诱惑命运和改变svn:author的诱惑是非常强大的。

我可以给你一些建议:

  • 你可以使用Jenkins之类的东西。Jenkins是一个持续构建引擎。但是,它还将您的完整历史记录存储在一个易于使用的界面中。如果您使用LDAP或Windows AD,它可以做的一件事是将用户id转换为实际名称。因此,如果您查看Jenkins上的历史记录,您将看到实际的用户名。

  • 您可以使用另一个修订属性。例如,local:username。这也是通过post-commit钩子完成的。但是,它不会改变svn:author修订属性,因此您不会有任何可能的副作用。当需要通过svn pg --rev-prop -r $rev命令查看用户名时,可以进行快速查找。或者,如果您使用--with-rev-prop local:username--with-all-revprops参数以及--xml参数(对不起,只有在XML格式时才显示在日志中),您可以看到svn log

顺便说一下,如果你使用post-commit钩子来更改svn:author,或者添加local:username修订属性,你还需要添加一个pre-revprop-change来允许你更改/添加修订属性。这是所有其他钩子的反面。在这些钩子中,你必须生成一个非零的退出值来阻止一个动作。在本例中,您希望生成零退出值以允许操作。如果没有这个钩子,您将无法更改revision属性。

日志中看到的用户ID是提交修订时用于向服务器进行身份验证的ID。没有办法直接在客户端内部改变客户端报告的内容;您只能在事后提取日志并重新映射id,并且每次要提取日志时都必须这样做。

最新更新