4

我在我的团队中使用 Phabricator 和 Arcanist 进行代码审查。“arc land”命令很棒,但有一种情况对我们不起作用。

我们有一个 xml 文件,其中包含一个链表(每个元素都引用前一个元素)。我们不会经常更改此文件,但有时我们会这样做。如果两个人同时进行更改,则会发生“无声冲突”,这意味着链表被破坏,因为两个新元素都链接到相同的先前元素。这不是很难解决。但是 git 不会引发合并冲突。

所以当我们运行arc land时,会自动推送不正确的xml文件。我们不希望那样。

正确的做法是使用 arc amend,然后手动解决冲突,然后使用 git push(就像我们今天所做的那样没有任何麻烦),或者您建议如何继续进行?

4

1 回答 1

9

一些可能的想法:

  • 您可以在运行arc land --hold之前停止git push并检查更改,然后git push手动运行。
  • 您可以在 Git 允许提交之前添加本地 Git 预提交挂钩以验证 XML 文件。
  • 您可以在服务器上添加一个预接收挂钩,以在将 XML 文件推送到远程之前对其进行验证。
  • merge您可以使用in 中的指令覆盖 Git 的合并行为gitattributes,并将默认合并替换为正确(或无法合并)的合并。
  • 您可以尝试将 XML 文件替换为某种格式的数据,该格式不具有这些不需要的合并属性,因为此问题是普遍问题。
  • 您可以通过在文件中包含一些总是冲突的字符串来强制合并失败。例如,lastNode="whatever"为容器元素添加一个类似的属性(即,始终在第 1 行或其他任何内容),以便通过命名不同的最后一个节点,两次编辑将始终在该行发生冲突(为确保已编辑,您可以检查lastNode在运行时是正确的)。如果该文件是自动生成的,您可以简单地将一个随机数放在已知行的注释中。
于 2013-07-11T23:49:37.053 回答