gerrit submit type 解析(gerrit提交为什么会自动产生一条merge记录)

如标题描述,最近关于这个gerrit的submit type的设置引起了一个问题,我大概模拟了下开发的提交场景,如下:

开发A和开发B都在修改仓库repo_test的代码,开发A修改test1.txt 然后提交到gerrit上,并在gerrit上合入了这个提交(commitA),开发B没有执行git pull, 直接修改了test2.txt, 这个test2.txt和test1.txt没有任何关联性,是完全不相关的模块,然后开发B提交gerrit,然后gerrit上合入了这个提交(commitidB),此时,由于开发B的这个提交相对服务器少了开发A的改动提交,就自动生成了一条merge(叫commitB+吧),比如如下:

 以上,B+是自动生成的merge,这个自动merge的记录在gerrit上是看不到的,真正的修改是在B,所以开发在gerrit上找到B,让我(职位:CM)在B节点标记tag,我在B标记tag后打包(我执行git checkout B),发现没有A的修改了,这就出问题了!!!但是git checkout B+就有A的提交!!

懵逼中。。。。

然后发现,是因为开发B没执行git pull ,没把A的改动带进去,所以提交的时候就自动产生了这个merge的提交记录,话说,使用rebase就不会产生,但是怎么搞呢?

然后发现了gerrit的submit type 可以控制

 默认的是“Merge if Necessary”, 这个就是在有差异的时候自动生成一条merge记录

所以换成“Rebase if Necessary”,这个会自动rebase,不会自动产生merge记录

如下是gerrit换成“rebase if Necessary”的提交记录:

原文地址:https://www.cnblogs.com/zndxall/p/13207232.html