Subversion - 如何提交单个文件并进行将来的提交会忽略对此文件的任何修改?

时间:2013-12-20 15:16:11

标签: svn properties

我正在使用Doxygen从Subversion repo中检出的C ++源代码中的注释构建文档。作为构建的一部分,Doxygen用于构建输出文件 \ html \ index.html

我希望检查默认 \ html \ index.html ,解释如何构建文档。签入后,我希望任何提交都忽略对此文件的修改。

是否有某种方法可以使用SVN属性执行此操作,以便提交将忽略 \ html \ index.html (如果它似乎已修改?)

提前致谢,

-Ed

2 个答案:

答案 0 :(得分:2)

我认为没有任何内置机制可以告诉提交忽略某些文件。如SVN: Is there a way to mark a file as "do not commit"?中所述,如果您使用的是TortoiseSVN,则可以使用“ignore-on-commit”更改列表,但这不会阻止其他人提交更改,除非所有THEM也使用该更改列表。

问题的一个可能的解决方案是,svn lock服务器上的文件(没有工作副本!)并且永远不会解锁它。这会阻止其他人对该文件进行任何更改,除非他们窃取锁定。

显然,如果您需要更改模板/说明文件,则需要先窃取锁定或破坏服务器上的锁定,然后在完成后再次锁定文件。

答案 1 :(得分:2)

您可以使用预提交挂钩将文件标记为 not committable 。人们可以更改文件,但如果他们尝试提交更改,则提交将被拒绝。这比使用更改列表更自动,更改列表不仅必须在逐个用户的基础上完成,还意味着您必须为每个工作目录执行此操作。在某个地方,有人会不小心做出改变。

我碰巧有这样一个pre-commit hook。它位于Perl中,默认情况下通常在Unix / Linux / Mac上可用,并且Windows可免费使用。您只需设置一个控制文件以防止更改;

[file You do not have the ability to modify this index.html file.]
file = **/html/index.html
access = read-only
users = @ALL

[file Allow yourself to edit this file]
file = **/html/index.html
access = read-write
users = ed

您还可以使用add-only让人们创建此文件,但绝不编辑它。这样,人们可以创建新项目,添加此文件,但不能编辑它。