gpt4 book ai didi

mercurial - 如何防止 Mercurial 提交/推送某些文件?

转载 作者:行者123 更新时间:2023-12-01 01:30:11 25 4
gpt4 key购买 nike

在我们的开发过程中,我们将所有 *.resx 文件发送给翻译人员。翻译人员通常需要一周时间将文件发回。在此期间,不允许任何人添加、删除或更新任何 resx 文件。

如何配置 mercurial 以强制执行该策略?

我们的设置:每个开发人员都使用我们中央存储库的本地克隆。

很高兴有:

  • 我会每隔几周打开和关闭“策略”。所以理想情况下,我想要一些易于在一个地方配置并影响所有开发人员的东西。
  • 我宁愿在本地存储库级别然后在中央存储库级别执行该策略,因为如果我们阻止对中央存储库的“推送”,开发人员将更难撤消已在本地提交的变更集。

  • 谢谢

    更新:

    有关翻译过程的更多信息:

    merge 在这里不是问题。翻译人员不会更改我们发送给他的文件。我们向他发送了一堆语言中性的 .resx (form1.resx) 并返回了一堆语言特定的 resx (form1.FR.resx)。

    为什么要阻止添加新的 resx?当我们向应用程序添加新 UI 时,就会添加 resx。如果我们在翻译包发送后这样做,翻译人员将不知道新的 UI,我们最终会得到一个没有翻译的新 UI。

    为什么要阻止更新 resx?如果开发者将一个标签值从“打开”更改为“关闭”,他就做出了非常重要的语义变化。如果他在翻译包发送后这样做,我们将无法取回正确的翻译。

    最佳答案

    您不能阻止人们提交对 .resx 的更改。除非您可以控制他们的台式机(使用 pretxncommit Hook ),否则它很容易绕过。在push的时候把支票放在中央服务器上更正常。使用 pretxnchangegroup钩,但你是对的,他们必须修复任何变更集并重新推送,这是高级用法。无论哪种情况,您都使用了 AclExtension强制执行实际限制。

    以下是两种可能对您更有效的替代方法:

  • 在翻译过程开始时克隆您的存储库,警告开发人员暂时离开 .resx,完成翻译后应用翻译器的工作,然后将这些更改 merge 回主开发存储库,并带有 merge command that always gives the incoming changes priority : X 。然后使用一个简单的hg log命令以查找 .resx 中的所有更改刚刚被覆盖并告诉开发人员重新添加它们。在这个时候责备他们。

  • 交替
  • 使 .resx 文件成为 Subrepository较大的外部存储库。然后在禁止期间关闭对该 resx 存储库的写访问权限。开发人员将能够在外部存储库中提交,但不能在内部存储库中提交,但克隆仍然会像往常一样获得两者。

  • 就其值(value)而言,其他所有人都通过简单的 merge 来处理这个问题,.resx 是 (XML) 文本,并且 merge 得很好。

    使用 DVCS 时,准确反射(reflect)您的 svn 体验并不总是那么容易,但通常有更好的选择。

    关于mercurial - 如何防止 Mercurial 提交/推送某些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5274419/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com