Phabricator Arcanist arc land vs arc修正

时间:2013-07-11 13:39:38

标签: git phabricator

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

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

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

正确的操作是使用弧修正,然后手动解决该冲突,然后进行git推送(就像我们今天没有任何麻烦),或者你会如何建议继续前进?

1 个答案:

答案 0 :(得分:7)

一些可能的想法:

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