在我们的开发过程中,我们将所有* .resx文件发送给翻译人员。翻译通常需要一周时间才能发回文件。在此期间,不允许任何人添加,删除或更新任何resx文件。
如何配置mercurial来强制执行该策略?
我们的设置:每个开发人员都使用我们的中央存储库的本地克隆。
很高兴:
我会每隔几周打开和关闭“政策”。理想情况下,我想在一个地方轻松配置并影响所有开发人员。
我宁愿在本地存储库级别执行该策略,然后在中央存储库级别执行该策略,因为如果我们阻止中央存储库上的“推送”,则dev将更难撤消已在本地提交的变更。
由于
更新:
有关翻译流程的更多信息:
合并不是问题。翻译器不会更改我们发送给他的文件。我们向他发送了一堆语言中立的.resx(form1.resx)并返回一堆语言特定的resx(form1.FR.resx)。
为什么要阻止添加新的resx?当我们向应用程序添加新UI时,会发生添加resx。如果我们在发送翻译包之后这样做,翻译人员将不会知道新的用户界面,我们最终会得到一个没有翻译的新用户界面。
为什么要阻止更新resx?如果开发人员将标签值从“打开”更改为“关闭”,他就会进行非常重要的语义更改。如果他在翻译包发送后这样做,我们将无法获得正确的翻译。
答案 0 :(得分:4)
除非您可以控制桌面计算机(使用.resx
挂钩),否则您无法阻止人们对pretxncommit
文件进行更改,即使这样也很容易被绕过。使用push
挂钩在pretxnchangegroup
时将检查放在中央服务器上更为正常,但你是正确的,他们必须修复任何更改集并重新推送,是高级用法。在任何一种情况下,您都使用AclExtension来强制实施限制。
以下是另外两种可能更适合您的方法:
hg log
命令查找刚被覆盖的.resx
中的所有更改,并告诉开发人员重新添加它们。在这个时候谴责他们。交替
对于它的价值,其他人都通过简单的合并处理这个问题,.resx是(XML)文本,它合并得很好。
使用DVCS时,要完全反映您的svn体验并不总是那么容易,但无论如何通常都有更好的选择。
答案 1 :(得分:0)
您可以将* .resx添加到hgignore文件