我公司的svn repo里面有很多MS Word文档。我们已经实现了一个策略,所有.doc文件都必须设置svn:needs-lock属性,以防止对难以合并的文件进行并行访问(我们也为xls,ppt,pdf等执行此操作)。 / p>
我们通过分发svn配置来实现策略,该配置包含适用于所有相关文档类型的auto-props。我们还设置了一个预提交钩子,它检查这些类型的所有添加文件是否设置了需求锁定属性(即如果他们忘记/懒得更新他们的svn配置文件,他们将无法将任何文档添加到repo中。
然而,我遇到的问题是,当用户尝试将文件导入repo时,预提交挂钩失败,例如一些用户喜欢直接通过TortoiseSVN的Repo浏览器添加文件,这实际上是一个svn导入。
通过对其他文件类型的测试,我看到执行导入确实应用了我的配置中列出的自动道具,但它们似乎并未在预提交钩子运行时应用。导入.doc文件时,挂钩失败,表示缺少needs-lock属性。
将单个文件添加到工作副本与提交直接导入文件之间是否存在很大差异?我们是否需要以某种方式定制我们的precommit钩子以满足这种情况?
答案 0 :(得分:1)
解决了......我的错也。
autoprops定义不正确。我的条目如下:
*.doc = svn:needs-lock
我什么时候应该:
*.doc = svn:needs-lock=*
即。实际上为needs-lock属性设置了一个值,就像你对svn:mime-type这样的任何其他属性一样。
令人恼火的问题是,破坏的配置适用于添加操作。在autoprops定义的末尾缺少“= *”似乎并不重要。无论如何,该属性的*值似乎都已设置。
然而,当您进行导入时,Subversion并不是那么好,并且不会自动修复您的borked autoprops设置。
我接受这是我的错,但是添加和导入操作的行为应该是一致的。