Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 需要gerrit的rebase命令_Git_Gerrit - Fatal编程技术网

Git 需要gerrit的rebase命令

Git 需要gerrit的rebase命令,git,gerrit,Git,Gerrit,我想知道与gerrit rebase按钮关联的命令,以重新设置补丁的基础。 我们的要求重新设置补丁的基础并提交 由于大多数情况下,我们在提交修补程序时都会出现以下错误: 我们的Gerrit政策设置为快进,但不能更改 成功提交一个修补程序后,我收到以下错误: 项目政策要求所有提交的文件都是快进的 请在本地重新设置更改的基础,然后再次上载以供审阅 使用rebase按钮,我可以进行rebase 是否有任何命令/脚本可以自动执行此重新基础过程。为什么要自动执行此过程?无论如何,如果更改需要重基,这意味着

我想知道与gerrit rebase按钮关联的命令,以重新设置补丁的基础。 我们的要求重新设置补丁的基础并提交 由于大多数情况下,我们在提交修补程序时都会出现以下错误:

我们的Gerrit政策设置为快进,但不能更改

成功提交一个修补程序后,我收到以下错误: 项目政策要求所有提交的文件都是快进的

请在本地重新设置更改的基础,然后再次上载以供审阅 使用rebase按钮,我可以进行rebase


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

为什么要自动执行此过程?无论如何,如果更改需要重基,这意味着在审查期间,另一个提交将推送到主分支。所以,如果你已经在复习中有所改变,就不要再提交任何东西。甚至不要同时推动另一个变化。因为若你们在评审时有两个单独的变更,那个么第二个提交的变更应该和另一个变更重新建立基础。在推送任何代码来查看之前,首先检查远程分支上是否有任何新的提交,这些提交应该首先在本地重新设置基础。

您可以为此编写一个python脚本。为此,您需要首先获取更改详细信息,然后获取当前补丁集,然后重新设置基础并上载

步骤:

使用获取当前补丁集详细信息

 ssh -p <port number> <server_name >  gerrit query  --current-patch-set <change_number> --format=JSON
解析它并获取当前的补丁集编号和引用,这些编号和引用将在步骤2和步骤3中使用

获取对本地回购的更改

如果您在gerrit中检查cherry pick命令,除了ref之外,其他所有更改都是相同的。您将从第一步得到这个ref。利用这一点和樱桃选择你的CL到当地回购

上传一个新的补丁集

 git push origin HEAD:refs/changes/< current_patchset_number+1 >/< change_number > 
创建新作业,并在Gerrit作业结束时使用Gerrit插件触发它。 第一个作业更新了Gerrit+2代码审查+1验证并触发第二个作业并通过所有参数。 现在,如果这是head,您可以提交,如果不是,则可以重新设置基础。
Cherry pick提交类型基本上与提交前的重定基调相同。我能想到的唯一区别是在Cherry pick提交时在提交的页脚中添加了元数据,因此请详细说明为什么不使用该提交类型。我想你的意思是HEAD:refs/changes/
#!/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