Git:创建一个依赖于其他Gerrit更改的提交?

Ada*_*m S 7 git gerrit

在我的工作地点,我们使用Gerrit服务器进行代码审查.通常,不同的人会创作不相关的提交.我遇到了一个问题,我必须创建一个依赖于另外两个不相关的提交的提交.

假设gerrit服务器上有两个提交:

  • 提交A:"添加函数flipImage"
  • 提交B:"添加函数rotateImage"

这两者是相互独立的.我的工作是实现Commit C:"添加函数flipRotateImage".这需要提交A和B两者.

我有两个问题:

  1. 我如何"拉"A和B,然后创作C,这样我实际上并没有改变A或B?换句话说,我不能挑选A或B,因为它会改变它们.我的目标是能够上传C进行审核而无需更新A和B.
  2. 假设A的作者上传了一个新的补丁集.我想更新我的工作分支,以便我的链中的"A"是最新的"A",而不是旧的补丁集.可以这样做吗?

Mag*_*äck 4

  1. 除非 A 或 B 重新依赖于另一个,否则您不能让 C 同时依赖于 A 和 B。一种可能性是签出 A 并从 B 合并以创建一个合并提交 D,您可以将 C 放入其中,但是那么你就必须上传这个无用的合并提交以供审查,但从图表角度来看,这是使 A 和 B 可从 C 访问而不使 A 可从 B 访问的唯一方法,反之亦然。
  2. 是的,使用 Gerrit UI 中提供的 URL 将新的 A 获取到您的工作区,并使用例如将 C 放在它的顶部git rebase --onto。确切的过程将稍微取决于您选择如何处理第一个问题中的问题,但忽略这一点并假设您已经检查了 C 的主题分支即可git rebase --onto newA oldA。