4

所以我们有这个 SVN 存储库,在此之前提交者的名称被整齐地显示,并且更容易跟踪谁做了什么。最近,svn 存储库被移到了另一台服务器上,它被设置为现在当我们检查日志时,我们只能看到作者的用户 ID。我相信我们可以更新服务器中的 SVN authz 或其他一些设置文件来添加作者姓名。

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

我使用 tortoiseSVN 作为 SVN 客户端。

4

2 回答 2

1

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

于 2013-05-06T19:27:00.513 回答
1

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

用户 ID 是否从旧服务器(人们用来使用其姓名的地方)更改为当前用户 ID?

我能想到两件事:

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

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

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


附加评论

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

修订属性包含执行提交的用户的svn:author名称。您可以将其更改为您想要的任何内容。正如我之前所说,我已经看到网站使用提交后挂钩来执行此操作。我不喜欢这样做。但是,某些网站似乎会为用户名选择随机字符串。就像X123您在示例中所说的那样。诱惑命运和改变的诱惑svn:author可能非常强烈。

我可以提出一些建议:

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

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

顺便说一句,如果您确实使用 post-commit 挂钩来更改svn:author或添加local:username修订属性,您还需要添加 pre-revprop-change 以授予您更改/添加修订属性的权限。这与所有其他钩子相反。在这些钩子中,您必须生成一个非零退出值才能阻止某个操作。在这个中,您希望生成一个零退出值以允许执行操作。如果没有这个钩子,您将无法更改修订属性。

于 2013-05-06T19:40:13.433 回答