【发布时间】:2010-03-24 03:04:04
【问题描述】:
我公司的 svn 存储库中有很多 MS Word 文档。我们实施了一项政策,即所有 .doc 文件都必须设置 svn:needs-lock 属性,以防止对难以合并的文件进行并行访问(我们也对 xls、ppt、pdf 等进行了此操作)。
我们通过分发 svn 配置来实施该政策,该配置具有为所有相关文档类型适当设置的自动属性。我们还设置了一个预提交钩子,检查所有添加的这些类型的文件是否都设置了需要锁定属性(即,如果他们忘记/懒得更新他们的 svn 配置文件,他们将无法将任何文档添加到 repo)。
但是,我遇到的问题是,当用户尝试将文件导入存储库时,预提交挂钩失败,例如一些用户喜欢直接通过 TortoiseSVN 的 Repo Browser 添加文件,这实际上是一个 svn 导入。
通过对其他文件类型的测试,我发现导入确实应用了我的配置中列出的自动道具,但它们似乎并没有在预提交挂钩运行时应用。导入 .doc 文件时,钩子失败,说缺少 needs-lock 属性。
将单个文件添加到工作副本并提交它与直接导入文件之间真的有很大区别吗?我们是否需要以某种方式定制我们的 precommit 钩子以适应这种情况?
【问题讨论】:
-
您的用户如何导入文件?当我将文件拖放到 TortiseSVN 的 repo 浏览器上时,自动道具正在添加 svn:needs-lock。您可能需要仔细检查相关用户是否使用正确的 svn 配置(可能他们错过了包含 Word 的更新?)。在您知道 svn 配置故意不使用 autoprops 的工作站上仔细检查您的 pre-commit 钩子也可能会很好。
-
这就是我的观点 - 我自己试过了,我知道我有正确的配置文件。当钩子被禁用时,我可以导入 Word 文档并应用自动道具(如您所建议的那样)。然而,一旦钩子就位,它就会失败,因为在钩子运行时似乎还没有设置自动道具。在预提交挂钩之后是否有任何时间可以应用属性?我不知道这怎么可能 - 即将提交更改......
-
如果你故意使用错误配置会发生什么?预提交钩子会拒绝它吗?您看到的行为对我来说也没有意义,而且我无法重现。这让我觉得还有其他事情发生。
标签: svn import tortoisesvn automatic-properties