gpt4 book ai didi

git - 如何设置具有审阅者滞后时间(又名堆叠差异)的 Arcanist 工作流程?

转载 作者:太空狗 更新时间:2023-10-29 14:13:20 25 4
gpt4 key购买 nike

我是 git 的新手,甚至是 Phabricator 的新手,我正试图在我的项目早期建立一个干净的工作流程。据我了解,git 的正确做法是为每个功能创建一个新分支,在分支中实现它,然后将分支 merge 到 master 中。效果很好,没问题。

进入 Phabricator 和预推送代码审查。我创建了一个分支,我们称它为“B”,实现一些东西,运行“arc diff”将其放入 Phabricator 的差异审查系统,等待批准,最后运行“arc land”以推送到主存储库。到目前为止,一切都很好。但是,我不想在等待审稿人回复我时暂停进一步的开发。

因此,我的提交正在审核中,我想开始处理一个改进或相关功能。我创建了一个子分支,我们称它为“SB”,然后开始工作。我让 SB 准备送审,但 B 尚未获得批准。 “arc diff”看起来会将现有提交与我的新更改结合起来,这是我不想要的 - 这是新更改,而不是对旧更改的更新。我改为尝试“arc diff B”并且它有效,我在 Differential 中获得了一个新修订,其中仅包含新更改。 B 获得批准,我在 B 上运行“arc land”以提交它。这行得通。

SB 获得批准,我在 SB 上运行“arc land”以提交它。我得到一个使用异常 - Arcanist 认为这两个修订都在 SB 中而不是在 master 中。我尝试切换到 master 并运行更新,然后再试一次。同样的错误。我尝试使用 --revision 标志来完成这两项更改(即使其中一个确实已经完成)。我遇到 merge 冲突。我解决并提交 merge 冲突,然后重试。我再次遇到完全相同的 merge 冲突。

我最终想到了尝试对 SB 进行 rebase ,最终让“arc land”正常工作。所以,我有一个技术上可行的解决方案,但这对我来说似乎很笨拙。有没有更好的方法来避免手动重新设置基址只是为了让 Arcanist 认识到不,我已经着陆的修订不是我现在着陆的一部分?

最佳答案

通常,在 Arcanist 中,您将创建主分支之外的每个分支。这将防止第 3 段中描述的问题。

工作流程是这样的:

  1. pull master的当前代码
  2. 使用arc branch B创建本地分支
  3. 对您的更改进行编码并使用 arc diff 来比较您的代码
  4. 再次检查 master 并 pull 当前代码
  5. 使用arc branch SB创建本地分支
  6. 对您的更改进行编码并使用 arc diff 来比较您的代码

一旦 B 登陆到 master 上,仍然需要进行 merge 或 rebase 。

如果你不想让 SB 以 master 为基础,而真的希望它以 B 为基础,那么你需要使用 arc 指定基数diff B 这也将解决第 3 段中描述的问题。不幸的是,此选项不会阻止第 4 段中的 merge 冲突。您必须在着陆之前重新设置 SB 基线以防止这种情况发生。

关于git - 如何设置具有审阅者滞后时间(又名堆叠差异)的 Arcanist 工作流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com