如何在SVN中为单个文件的单个版本设置属性

4
我有一个Subversion存储库,有许多用户进行检入和检出。但是,我经常需要为其他人检入工作任务,并需要跟踪原作者。
我在考虑在SVN中创建一个属性,例如“originalauthor”,来跟踪这个信息。如果该属性为空,我可以使用作者。如果该属性已经填写,我就可以适当地归属更改。
然而,我无法找到一种不会持续多个版本的添加属性的方法。同样,似乎也没有使用提交挂钩来保证“originalauthor”属性将被删除(如果包含此属性的提交未被执行)的方法。
我可以在服务器上重写密码文件,以允许我在他们的用户名下进行提交,然后恢复原始密码文件,但这似乎很笨重(并且无法让我跟踪它是代表他们被检入的)。或者,我可以创建一个附加的用户(因此每个“用户A”都有一个“用户A代理”),我可以用来检入更改。这些选项都不太吸引人。
有什么建议或想法吗?
2个回答

9

Subversion有两种属性

  • 文件或目录上的属性。这些属性是有版本控制的
  • 修订属性。这些属性特定于它们适用的修订。

第一种类型仅在您希望标记文件的所有版本时才有用。

为了标记特定路径,Subversion项目本身会以特殊格式将原始作者添加到日志消息中,该格式由contribulyzer脚本读取:

Patch by: Jan Jansen <jan@example.com>

但如果您有可用的工具(并且可以假设使用Subversion 1.5+),您也可以使用

svn commit --with-revprop "original-author=Jan Jansen <jan@example.com>" 

创建一个原作者修改属性。

要检索该属性,您可以使用svn log:

svn log <...> --with-revprop original-author

我认为这会起作用,特别是如果我有一个提交后脚本来添加该属性(如果它不存在)。 - Chris B.

0
为什么不为所有需要代理的其他用户创建一个单独的分支,然后当您审核他们的代码时(我假设您是代表他们进行审核的,因为他们没有权限这样做),再将其推广到主干?
我不确定为什么其他用户不能自己检入代码。也许如果您解释一下,我们可以提供更好的答案。

用户可以自行签入。但是他们中的许多人都不太懂技术,也不习惯使用源代码控制系统。理想情况下,他们都应该学会,但我没有强制他们这样做的权力。 - Chris B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接