【问题标题】:Svn import with auto-props & pre-commit hook带有自动道具和预提交钩子的 Svn 导入
【发布时间】: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


【解决方案1】:

解决了……也是我的错。

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

*.doc = svn:needs-lock

我应该有的时候:

*.doc = svn:needs-lock=*

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2015-03-30
    • 1970-01-01
    • 2014-03-22
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多