我正在选择一个免费的工具来执行代码审查,我在考虑Gerrit。 想法是检查具有多个更改(提交)的分支的代码。如何使用Gerrit进行分支机构审查?目的是在一次Gerrit变更中分析所有分支变更。
谢谢
答案 0 :(得分:0)
如果您要检查具有多个提交的分支,则Gerrit不适用于该分支。 Gerrit中的审阅在每个提交中单独执行。 Github或Bitbucket是适合分支机构审查的工具。
回答了您的问题,并提出了一个建议:恕我直言,您应该尝试与Gerrit合作,逐一检查每个提交,因为这是一个非常好的工作流程。我真的很喜欢(更喜欢)格里特策略。
答案 1 :(得分:0)
我创建了一个 git 别名,它促进了传统的 git 工作流程(在“工作”分支上进行了多次提交),并使用相同的 Change-Id 自动将它们推送到 Gerrit em> 在提交消息中。可以添加到 .gitconfig 文件中:
...
[alias]
gerrit = "!git fetch --all && git rebase origin/master $(git symbolic-ref HEAD) && \
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})"
假设:
master
,远程的名称是origin
(可以在别名中设置,$(git remote)
可以用于更大的灵活性); 用法:git gerrit
其工作原理如下:
git fetch --all && git rebase origin/master $(git symbolic-ref HEAD)
如果有人在此期间更新了 master
,因此我们希望在新的 rebase
之上master
我们的提交。 $(git symbolic-ref HEAD)
仅生成我们当前的分支名称(如果 rebase
报告任何内容,我们可以解决冲突并即时提交)。
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
,这会将分支指针移回此提交,将以后提交的所有更改保留为 暂存。然后:
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
之前和第一个 {{ 1}}).
优点:
reset
编辑它们以实现逻辑顺序和可读性(不要修改 Change-Id来自“基本”提交消息);尽管如此,我还是建议保留一个经典的远程分支作为备份并同步它。然后代替 reflog git rebase -i
也可以使用 HEAD@{2}
,这是远程分支的提示(前$(git rev-parse @{u})
值得添加到别名)。
同样的东西可以用于与同事共享的分支(但我们必须避免重写历史和push
)。