需要来自gerrit的rebase命令

时间:2013-11-27 06:21:34

标签: git gerrit

我想知道与gerrit rebase按钮相关的命令来修改补丁。 我们的要求“重新修补补丁并提交” 在我们提交补丁时,大多数情况下我们都会出现错误:

我们的Gerrit政策仅设置为“快进”(无法更改)。

成功提交一个补丁后,我收到以下错误:

项目政策要求所有提交都是快进的。

请在本地重新定义更改并再次上传以供审核

使用rebase按钮,我可以进行rebase。

是否有任何命令/脚本可以自动执行此rebase过程。

3 个答案:

答案 0 :(得分:1)

为什么要自动化它?无论如何如果更改需要rebase意味着,在审核期间,另一个提交推送到主分支。因此,如果您已经对审核进行了更改,请不要提交任何其他内容。或者甚至不要同时推动另一个变化。因为如果您在审核时有2个单独的更改 - 那么第二个提交应该与另一个更改。并且在推送任何代码进行审核之前先检查是否有任何新的提交在远程分支上应该首先在本地重新定位。

答案 1 :(得分:0)

  1. 创建新作业并在Gerrit作业结束时触发它(Gerrit插件)。
  2. 第一份工作更新了Gerrit +2代码审核+ 1验证并触发第二份工作并传递所有参数。
  3. 现在你可以提交(如果这是头部或底板,如果没有)。
  4. #!/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脚本。为此,您需要先获取更改详细信息,然后获取当前的补丁集,然后重新绑定并上传。

步骤:

  1. 使用

    获取当前的补丁集详细信息
     ssh -p <port number> <server_name >  gerrit query  --current-patch-set <change_number> --format=JSON
    

    解析它并获取current_patchset_number和refs将在step2和step3中使用。

  2. 获取更改为本地仓库。

    如果你检查gerrit中的cherry-pick命令,除了ref之外的所有更改都是一样的。你将从第一步获得这个参考。使用它,樱桃选择你的CL到当地的回购。

  3. 上传新的补丁集

     git push origin HEAD:refs/changes/< current_patchset_number+1 >/< change_number >