防止意外标记Mercurial中解决的所有冲突

时间:2013-08-30 15:04:25

标签: version-control mercurial merge-conflict-resolution

这种情况不会经常发生,但每隔一段时间我就会偶然发现我的输入,并在没有文件参数的情况下意外调用“hg resolve -m”。然后,这有助于标记所有已解决的冲突。有没有办法阻止它在没有一个或多个文件参数的情况下解析?

1 个答案:

答案 0 :(得分:0)

您可以使用pre-resolve挂钩执行此操作,但您必须自己解析参数以确保它们有效,这可能很棘手。

您可能需要查看的相关环境变量是:

  • HG_ARGS - 整个命令行的内容,例如resolve -m
  • HG_OPTS - 包含指定选项的字典对象。如果已指定mark,则会有一个名为True的条目,其值为-m
  • HG_PATS - 这是指定的文件列表

根据您要使用的脚本语言,您应该能够测试HG_OPTS True是否包含mark的{​​{1}},如果HG_PATS包含--include则为--exclude }数组为空。

当您考虑--includeHG_OPTS参数时,它开始变得复杂。

如果您指定要在HG_PATS选项中解析的文件,则要包含的文件将位于hg resolve -m test.txt --exclude test.txt,而不是{{1}}。另外,我不知道如果您指定{{1}}会发生什么。我希望它不会解决任何问题,但你需要测试它。

一旦解析了命令参数,就会返回0以允许命令或1来阻止它。如果你返回1以避免混淆,你应该回应失败的原因。

如果您不知道如何执行此操作,则需要指定您使用的操作系统和shell,以便任何人提供更具体的帮助。