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

时间:2008-11-17 20:30:57

标签: svn version-control

我有一个Subversion存储库,有很多用户检查进出。但是,我还需要经常为其他人办理工作。我需要跟踪作品的原始作者。

我正在考虑在SVN中创建一个属性,比如“originalauthor”,它可以追踪这个。如果它是空的,我可以使用作者。如果填写完毕,我可以适当地归因于这些变化。

然而,我看不到添加不会在多次修订中保留的属性的方法。类似地,似乎没有办法使用提交钩子来保证如果存在不包含它的提交,将删除“originalauthor”属性。

我总是可以在服务器上重写密码文件以允许我在他们的用户名下提交,然后恢复原始密码文件,但这看起来很笨拙(并且不让我跟踪它已经签入的事实代)。或者我可以创建一个额外的用户(因此对于每个“用户A”都有一个“用户A代理”),我可以用它来检查更改。这些选项似乎都不具吸引力。

有任何建议或想法吗?

2 个答案:

答案 0 :(得分:9)

Subversion有两种属性

  • 文件或目录的属性。这些属性已版本化
  • 修订版属性。这些是特定于它们适用的回归。

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

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

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

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

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

创建一个orignal-author修订版属性。

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

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

答案 1 :(得分:0)

为什么不为所有其他用户(需要代理)设置单独的分支,然后当您查看它们时(我假设您代表他们办理登机手续,因为他们不允许这样做)然后您升级到主干?

我不确定为什么不允许其他用户自行办理登机手续。也许如果你解释我们可以提供更好的答案。