如何有效地审查git子模块的更新rebases?

问题描述 投票:3回答:1

我们的项目使用了一个git 子模块 来引脚我们的一个库依赖。

我们定期 rebase 的子模块来跟随上游的变化,而且我们还有一组提交在它上面,我们不容易上游。

当有人对子模块进行重构的时候,我只看到在 git diff 的母回购。

--- a/mysubmodule
+++ b/mysubmodule
@@ -1 +1 @@
-Subproject commit abc12345abc12345abc12345abcd12345abc1234
+Subproject commit efg67890efg67890efg67890efg67890efg67890

这不是很有用 当我 git diff 子模块中的这些提交,我得到了很多输出,包括所有上游的变化,而我们在上面的提交被埋在中间。我无法轻易判断是否对我们自己的提交进行的一些冲突解决引入了一些错误。

如何有效地对子模块的变化进行代码审核?

git git-submodules git-diff
1个回答
5
投票

使用 git range-diff. 它正是为了这个目的而设计的,用于审查提交范围。

如果你的上级提交仓库有:

-Subproject commit abc123
+Subproject commit efg678

那么 cd 到你的子模块中,并运行(注意三点式 ...):

git range-diff abc123...efg678

解释输出示例。

git range-diff output explained

  • 每个提交行都显示了重写前和重写后的提交SHA。
  • 解释:每个提交行都显示了提交前和提交后的SHA。绿线 显示 上游项目的新提交. 如果你想了解自你上次重设基地以来上游发生了什么变化,请阅读它们。
  • 黄色 线条显示 承诺不变 由回基。
  • 行是提交的 移除 作为解决冲突的一部分 (例如,如果您将您的一个补丁上传到上游项目)。
  • 绿色 行是提交的 附加 作为您解决冲突的一部分(例如,如果有必要进行新的定制,使您的项目与新的上游代码一起工作)。
  • 红色和绿色 行显示的是作为rebase的一部分而被修改的提交(例如,当冲突解决时,为了与修改后的上游代码一起工作,不得不修改你的提交-上层)。

    当它们出现时,它们还包括一个正常的差异,所以你可以检查差异。

作为审查的一部分,你应该特别检查你的顶层提交的添加和删除是否正确 (或者是否有一些被意外放弃),以及冲突解决 (红绿线) 是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.