Phabricator Arcanist arc land vs arc修正

Jay*_*ete 3 git phabricator

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

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

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

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

Eva*_*ley 8

一些可能的想法:

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