我们的项目使用了一个git 子模块 来引脚我们的一个库依赖。
我们定期 rebase
的子模块来跟随上游的变化,而且我们还有一组提交在它上面,我们不容易上游。
当有人对子模块进行重构的时候,我只看到在 git diff
的母回购。
--- a/mysubmodule
+++ b/mysubmodule
@@ -1 +1 @@
-Subproject commit abc12345abc12345abc12345abcd12345abc1234
+Subproject commit efg67890efg67890efg67890efg67890efg67890
这不是很有用 当我 git diff
子模块中的这些提交,我得到了很多输出,包括所有上游的变化,而我们在上面的提交被埋在中间。我无法轻易判断是否对我们自己的提交进行的一些冲突解决引入了一些错误。
如何有效地对子模块的变化进行代码审核?
使用 git range-diff
. 它正是为了这个目的而设计的,用于审查提交范围。
如果你的上级提交仓库有:
-Subproject commit abc123
+Subproject commit efg678
那么 cd
到你的子模块中,并运行(注意三点式 ...
):
git range-diff abc123...efg678
解释输出示例。
红色和绿色 行显示的是作为rebase的一部分而被修改的提交(例如,当冲突解决时,为了与修改后的上游代码一起工作,不得不修改你的提交-上层)。
当它们出现时,它们还包括一个正常的差异,所以你可以检查差异。
作为审查的一部分,你应该特别检查你的顶层提交的添加和删除是否正确 (或者是否有一些被意外放弃),以及冲突解决 (红绿线) 是否正确。