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

如何在SVN中为单个文件的单个修订版设置属性,svn,version-control,Svn,Version Control,我有一个Subversion存储库,有许多用户在签入和签出东西。然而,我也需要经常为其他人登记工作。我需要追踪作品的原作者 我正在考虑在SVN中创建一个属性,比如“originalauthor”,它可以跟踪这一点。如果它是空的,我可以使用作者。如果已填写,我可以适当地将更改归为属性 但是,我找不到一种方法来添加一个属性,该属性不会在多次修订后保持不变。类似地,如果存在不包含“originalauthor”属性的提交,则似乎没有一种使用提交挂钩来保证“originalauthor”属性将被删除的方

我有一个Subversion存储库,有许多用户在签入和签出东西。然而,我也需要经常为其他人登记工作。我需要追踪作品的原作者

我正在考虑在SVN中创建一个属性,比如“originalauthor”,它可以跟踪这一点。如果它是空的,我可以使用作者。如果已填写,我可以适当地将更改归为属性

但是,我找不到一种方法来添加一个属性,该属性不会在多次修订后保持不变。类似地,如果存在不包含“originalauthor”属性的提交,则似乎没有一种使用提交挂钩来保证“originalauthor”属性将被删除的方法

我总是可以在服务器上重写密码文件,以允许我在他们的用户名下提交,然后恢复原始密码文件,但这似乎很笨拙(而且不允许我跟踪它是代表他们签入的)。或者我可以创建一个额外的用户(因此对于每个“用户A”都有一个“用户A代理”),我可以使用它来签入更改。这两种选择似乎都没有吸引力


有什么建议或想法吗?

为什么不为所有其他用户(需要代理的用户)设立一个单独的分支,然后当您查看它们时(我假设您代表他们签入,因为他们不允许这样做),您会将其升级到主干


我不知道为什么不允许其他用户自己登录。如果您解释一下,我们可以提供更好的答案。

Subversion有两种属性

  • 文件或目录上的属性。这些属性已进行版本控制
  • 修订属性。这些是特定于它们所适用的回复的
第一种类型仅在您希望标记文件的所有版本时才有用

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

Patch by: Jan Jansen <jan@example.com>
修补者:Jan Jansen
但是如果您有可用的工具(并且可以假设subversion 1.5+),您也可以使用

svn commit --with-revprop "original-author=Jan Jansen <jan@example.com>" 
svn提交——使用revprop“原始作者=Jan Jansen”
创建原始作者修订属性的步骤

要检索属性,您可以使用svn日志作为:

svn log <...> --with-revprop original-author
svn日志——使用revprop原始作者

允许用户自己登录。但其中许多都是高度非技术性的,并且不习惯使用源代码控制系统。理想情况下,他们都会学习,但我不能强迫他们学习。我认为这会起作用,特别是如果我有一个提交后脚本,在缺少属性时添加属性。