2010-03-24 68 views
3

我公司的svn回购有很多MS Word文档。我们已经实施了一项策略,即所有的.doc文件必须具有svn:needs-lock属性,以防止难以合并的文件的并行访问(我们也为xls,ppt,pdf等完成了此操作)。Svn import with auto-props&pre-commit hook

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

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

通过测试其他文件类型,我已经看到做一个导入实际上应用我的配置中列出的自动道具,但它们似乎并没有应用于预先提交挂钩运行的点。在导入.doc文件时,钩子失败,说缺少需要锁定属性。

将单个文件添加到工作副本并提交它与直接导入文件之间有真正的区别吗?我们是否需要以某种方式调整预提交挂钩以迎合这种情况?

+0

您的用户如何导入文件?当我将文件拖放到TortiseSVN的repo浏览器时,自动道具添加了svn:needs-lock。您可能需要重新检查相关用户使用正确的svn config(可能他们错过了包含Word的更新?)。在你知道svn config故意离开自动驾驶仪的工作站上仔细检查你的pre-commit钩子也许很好。 – ThatBlairGuy 2010-03-24 17:42:13

+0

这就是我的观点 - 我自己尝试过,我知道我有正确的配置文件。当钩子被禁用时,我可以导入W​​ord文档,并使用自动引导程序(如您所建议的那样)。然而,一旦挂钩就位,它会失败,因为在挂钩运行时自动道具似乎没有被设置。 在pre-commit hook之后有没有什么时候可以应用属性?我没有看到它真的有可能 - 这些变化正在被承诺... – 2010-03-24 21:45:09

+0

如果你故意使用*错误*配置会怎么样? pre-commit钩子是否拒绝它?你看到的行为对我来说也没有意义,也不是我可以重现的。这让我觉得还有其他事情正在发生。 – ThatBlairGuy 2010-03-25 16:25:09

回答

1

解决了它......我的错也。

自动飞机定义不正确。我有条目,如:

*.doc = svn:needs-lock 

时,我应该有:

*.doc = svn:needs-lock=* 

即实际上是设置了需要锁定属性的值,因为你会为任何其他财产一样的svn:mime-类型。

令人烦恼的问题是,配置失效对于添加操作来说工作得很好。似乎并不重要,因为自动定位结束时缺少“= *”。无论如何,该属性的*值似乎都已设置。

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

我接受这是我的错,但行为在添加和导入操作中应该是一致的。

相关问题