在开发过程中,我们将所有* .resx文件发送给一个翻译器。翻译者通常需要一周的时间才能发回文件。在此期间,不允许添加,删除或更新任何resx文件。如何防止Mercurial提交/推送某些文件?
如何配置mercurial执行该策略?
我们的设置:每个开发人员都使用我们中央存储库的本地克隆。
很高兴有:
我会转“政策”和关闭每隔几个星期。所以理想情况下,我希望在某个地方容易配置并影响所有开发者的东西。
我宁愿在本地存储库级别执行该策略,然后在中央存储库级别执行该策略,因为如果我们阻止中央存储库上的“推送”,则开发人员将很难撤销已在本地提交的更改集。
感谢
UPDATE:在翻译过程
更多信息:
合并是不是这里的问题。翻译者不会更改我们发送给他的文件。我们向他发送了一堆语言中立的.resx(form1.resx),并返回了一组语言特定的resx(form1.FR.resx)。
为什么要添加新的resx?当我们向我们的应用程序添加一个新的UI时,添加一个resx。如果我们在翻译软件包发送后这样做,翻译人员将不会知道新的用户界面,我们最终将得到一个没有翻译的新UI。
为什么要防止更新resx?如果开发人员将标签值从“打开”更改为“关闭”,他已经做出了非常重要的语义变化。如果他在翻译包发送后这样做,我们将不会得到正确的翻译。
我将检查AclExtension。 resx文件分散在项目文件夹中的多个目录中,子存储库在该上下文中不起作用。我没有做所有这些来缓解合并过程。我更新了我的问题,并提供了更多信息,说明我们为什么这样做 – Sylvain 2011-03-11 15:33:25
你的解释是有道理的。您可以使用AclExtension在推送级别执行您想要的操作。我仍然认为这是一种非常普遍的情况,而其他人都设法解决这个问题而不诉诸于阻塞钩应该让你停下来。例如,以下是Mercurial项目本身的方式,它依赖于编码期间和之后发生工作的大量志愿者翻译人员处理它:http://mercurial.selenic.com/wiki/TranslatingMercurial – 2011-03-11 16:03:26