3

我公司的 svn 存储库中有很多 MS Word 文档。我们实施了一项政策,即所有 .doc 文件都必须设置 svn:needs-lock 属性,以防止对难以合并的文件进行并行访问(我们也对 xls、ppt、pdf 等进行了此操作)。

我们已经通过分发 svn 配置来实施该策略,该配置具有为所有相关文档类型适当设置的 auto-props。我们还设置了一个预提交钩子,检查所有添加的这些类型的文件是否都设置了需要锁定属性(即,如果他们忘记/懒得更新他们的 svn 配置文件,他们将无法将任何文档添加到 repo)。

然而,我遇到的问题是,当用户尝试将文件导入存储库时,预提交挂钩失败,例如,一些用户喜欢直接通过 TortoiseSVN 的存储库浏览器添加文件,这实际上是一个 svn 导入。

通过对其他文件类型的测试,我发现导入确实应用了我的配置中列出的自动道具,但它们似乎并没有在预提交挂钩运行时应用。导入 .doc 文件时,钩子失败,说缺少 needs-lock 属性。

将单个文件添加到工作副本并提交它与直接导入文件之间真的有很大区别吗?我们是否需要以某种方式定制我们的预提交钩子以适应这种情况?

4

1 回答 1

1

解决了……也是我的错。

autoprops 定义不正确。我有以下条目:

*.doc = svn:needs-lock

当我应该有的时候:

*.doc = svn:needs-lock=*

即实际上为需要锁定属性设置一个值,就像为任何其他属性(如 svn:mime-type)设置一个值。

恼人的问题是损坏的配置可以很好地用于添加操作。autoprops 定义末尾缺少“=*”似乎并不重要。无论如何,该属性的 * 值似乎都已设置。

但是,当您进行导入时,Subversion 并没有那么好,并且不会自动修复您的 borked autoprops 设置。

我承认这是我的错,但添加和导入操作的行为应该是一致的。

于 2010-03-26T09:36:23.640 回答