2013-11-27 729 views
1

我想知道與gerrit rebase按鈕相關的命令來重新綁定這個補丁。 我們的要求「調整基線補丁和提交」 由於大部分時間我們都在下面的錯誤,當我們提交補丁:需要gerrit的rebase命令

我們的格里特策略設置爲「快進」只(不能更改)。

成功提交一個補丁後,我得到下面的錯誤:

項目的政策要求所有提交的是一個快進。

請本地重訂的改變,並再次上傳審查

有了底墊按鈕,我能夠做的底墊。

是否有任何命令/腳本來自動化這個rebase進程。

+0

櫻桃挑選提交類型基本相同重訂之前立即提交(我能想到的唯一的區別是在頁腳中添加元數據提交時挑肥揀瘦)所以請詳細說明爲什麼使用該提交類型不是一種選擇。 –

回答

1

你爲什麼要自動化它?無論如何,如果更改需要重新分配,這意味着,在審查期間,另一個提交被推送到主分支。所以如果你已經對評論有所改變,就不要提交其他內容。甚至不要同時推動另一項改變。因爲如果您在審覈時單獨進行了2次更改 - 那麼第二次提交應該與另一次更改。並在推送任何代碼審查之前首先檢查是否有任何新的提交遠程分支,應首先在本地進行重新分配。

-1

你可以爲此寫一個python腳本。爲此,您需要先獲取更改詳細信息,然後獲取當前的補丁集,然後重新綁定並上傳。

步驟:

  1. 獲取當前補丁集信息使用

    ssh -p <port number> <server_name > gerrit query --current-patch-set <change_number> --format=JSON 
    

    解析,並得到current_patchset_number並將在第二步和第三步使用裁判。

  2. 將更改提取到本地回購。

    如果您在gerrit中檢查cherry-pick命令,除了ref之外,其它所有更改都是相同的。您將從第一步獲得此參考。使用它和櫻桃選擇您的CL到本地回購。

  3. 上傳新的補丁集

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

我想你的意思是'HEAD:refs/changes/' –

0
  1. 創造新的就業,並在格里特工作結束(與格里特插件)觸發它。
  2. 第一份工作更新了Gerrit +2代碼審查+ 1驗證並觸發第二份工作並傳遞所有參數。
  3. 現在你可以提交(如果這是頭或者如果不是,則爲rebase)。
#!/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