【问题标题】:Phabricator Arcanist arc land vs arc amendPhabricator Arcanist 弧地 vs 弧修正
【发布时间】:2013-07-11 13:39:37
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: git phabricator


    【解决方案1】:

    一些可能的想法:

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

    【讨论】:

    • 太棒了! arc land --hold 现在才有意义。验证 XML 文件的预接收挂钩(太多不同的本地设置依赖于预提交挂钩)是合乎逻辑的下一步。这在以前从来都不是什么大问题,因为该文件是手动编辑的,即使是新员工也很容易理解和修复,无需任何介绍。但是对于弧形土地,我看到人们忘记了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多