簡體   English   中英

需要來自gerrit的rebase命令

[英]Require rebase commands from gerrit

我想知道與gerrit rebase按鈕相關的命令,以對補丁程序進行重新設置。 我們的要求“為補丁重新設置基礎並提交”由於大多數情況下,在提交補丁時,我們都會遇到以下錯誤:

我們的Gerrit策略僅設置為“快進”(無法更改)。

成功提交一個補丁后,出現以下錯誤:

項目政策要求所有提交都必須快進。

請在本地重新設置更改,然后再次上傳以供審核

與重新設置按鈕,我能夠做重新設置。

是否有任何命令/腳本可以自動執行該變基過程。

為什么要使其自動化? 無論如何,如果更改需要重新設置基礎,則意味着在審核期間將另一個提交推送到主分支。 因此,如果您已經對審核進行了更改,請不要提交其他任何內容。 甚至不要同時推送其他更改。 因為如果您在審核中有單獨的2項更改-那么應將第二次提交的內容與另一個更改。 在推送任何代碼以進行檢查之前,請首先檢查遠程分支上是否有任何新提交應首先在本地進行重新提交。

  1. 創建新的Job並在Gerrit Job(Gerrit的插件)結束時觸發它。
  2. 更新了第一項工作的Gerrit +2代碼審查+ 1驗證並觸發了第二項工作,並傳遞了所有參數。
  3. 現在,您可以提交(如果是head,則提交,如果不是,則重新設置)。
#!/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

您可以為此編寫一個python腳本。 為此,您需要首先獲取更改詳細信息,然后獲取當前補丁集,然后重新設置基准並上載。

腳步 :

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

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

    解析它並獲取current_patchset_number和refs,它們將在第2步和第3步中使用。

  2. 獲取更改到本地倉庫。

    如果您在gerrit中檢查cherry-pick命令,則除了ref以外的所有更改都相同。 您將從第一步獲得此參考。 用它和櫻桃挑選你的CL到本地倉庫。

  3. 上載新補丁集

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM