如何使用 gerrit 进行分支审查?我想分析一次 gerrit 更改中的所有分支更改。
想法是审查具有多个更改(提交)的分支的代码。
如果你想审查一个有多个提交的分支,Gerrit 不是一个合适的工具。 Gerrit 中的审查是在每个提交中单独执行的。 Github 或 Bitbucket 是适合分支审查的工具。
回答了你的问题,一个建议:恕我直言,你应该尝试与 Gerrit 合作,单独审查每个提交,因为这是一个非常好的工作流程。我真的很喜欢(并且更喜欢)Gerrit 策略。
我创建了一个 git 别名,它促进了传统的 git 工作流程(在“工作”分支上进行多次提交),并在提交消息中使用相同的 Change-Id 将它们自动推送到 Gerrit。它可以添加到 .gitconfig 文件中:
...
[alias]
gerrit = "!git reset --soft $(git rev-list master..HEAD | tail -1) && \
git commit --amend --no-edit && \
(git push origin HEAD:refs/for/master; git reset HEAD@{2})"
假设:
用法:
git gerrit
工作原理如下:
git reset --soft $(git rev-list master..HEAD | tail -1)
git rev-list master..HEAD | tail -1
获得我们在分支上创建的第一个提交的 SHA-1(从 master
分叉后),我将其称为“基础”提交。然后我们将 SHA-1 提供给: git reset --soft
将分支指针移回此提交,将以后提交的所有更改保留为 staged。然后:
git commit --amend --no-edit
我们通过一次
--amend
将阶段性更改压缩到基础提交中。原始提交消息将被保留,因此将是Change-Id。
git push origin HEAD:refs/for/master
这就是一切的重点 - 我们推动 Gerrit ...
git reset HEAD@{2}
最后我们利用 reflog 历史恢复我们分支的原始形状,
HEAD@{2}
意味着我们的 HEAD 是两步前的修订(在 commit --amend
之前和第一个 reset
)。
优点:
git rebase -i
编辑它们以实现逻辑顺序和可读性(不要修改“基本”提交消息中的 Change-Id);