我想知道与gerrit rebase按钮相关的命令来修改补丁。 我们的要求“重新修补补丁并提交” 在我们提交补丁时,大多数情况下我们都会出现错误:
我们的Gerrit政策仅设置为“快进”(无法更改)。
项目政策要求所有提交都是快进的。
使用rebase按钮,我可以进行rebase。
是否有任何命令/脚本可以自动执行此rebase过程。
答案 0 :(得分:1)
为什么要自动化它?无论如何如果更改需要rebase意味着,在审核期间,另一个提交推送到主分支。因此,如果您已经对审核进行了更改,请不要提交任何其他内容。或者甚至不要同时推动另一个变化。因为如果您在审核时有2个单独的更改 - 那么第二个提交应该与另一个更改。并且在推送任何代码进行审核之前先检查是否有任何新的提交在远程分支上应该首先在本地重新定位。
答案 1 :(得分:0)
#!/bin/bash
sleep 10
echo $WORKSPACE
echo 'ssh -p 29418 gerrit-server gerrit review --project switch-dev --rebase' $GERRIT_CHANGE_NUMBER,$GERRIT_PATCHSET_NUMBER
cd $WORKSPACE
if [ $GERRIT_PATCHSET_NUMBER -eq '1' ] ; then
ssh -p 29418 gerrit-serve gerrit review --project switch-dev --submit $GERRIT_CHANGE_NUMBER,$GERRIT_PATCHSET_NUMBER
ssh -p 29418 gerrit-serve gerrit review --project switch-dev --rebase $GERRIT_CHANGE_NUMBER,$GERRIT_PATCHSET_NUMBER
fi
if [ $GERRIT_PATCHSET_NUMBER -eq '2' ] ; then
ssh -p 29418 gerrit-serve gerrit review --project switch-dev --submit $GERRIT_CHANGE_NUMBER,$GERRIT_PATCHSET_NUMBER
fi
答案 2 :(得分:-1)
你可以为此编写一个python脚本。为此,您需要先获取更改详细信息,然后获取当前的补丁集,然后重新绑定并上传。
步骤:
使用
获取当前的补丁集详细信息 ssh -p <port number> <server_name > gerrit query --current-patch-set <change_number> --format=JSON
解析它并获取current_patchset_number和refs将在step2和step3中使用。
获取更改为本地仓库。
如果你检查gerrit中的cherry-pick命令,除了ref之外的所有更改都是一样的。你将从第一步获得这个参考。使用它,樱桃选择你的CL到当地的回购。
上传新的补丁集
git push origin HEAD:refs/changes/< current_patchset_number+1 >/< change_number >