[英]Require rebase commands from gerrit
我想知道與gerrit rebase按鈕相關的命令,以對補丁程序進行重新設置。 我們的要求“為補丁重新設置基礎並提交”由於大多數情況下,在提交補丁時,我們都會遇到以下錯誤:
我們的Gerrit策略僅設置為“快進”(無法更改)。
項目政策要求所有提交都必須快進。
與重新設置按鈕,我能夠做重新設置。
是否有任何命令/腳本可以自動執行該變基過程。
為什么要使其自動化? 無論如何,如果更改需要重新設置基礎,則意味着在審核期間將另一個提交推送到主分支。 因此,如果您已經對審核進行了更改,請不要提交其他任何內容。 甚至不要同時推送其他更改。 因為如果您在審核中有單獨的2項更改-那么應將第二次提交的內容與另一個更改。 在推送任何代碼以進行檢查之前,請首先檢查遠程分支上是否有任何新提交應首先在本地進行重新提交。
#!/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腳本。 為此,您需要首先獲取更改詳細信息,然后獲取當前補丁集,然后重新設置基准並上載。
腳步 :
使用獲取當前補丁集詳細信息
ssh -p <port number> <server_name > gerrit query --current-patch-set <change_number> --format=JSON
解析它並獲取current_patchset_number和refs,它們將在第2步和第3步中使用。
獲取更改到本地倉庫。
如果您在gerrit中檢查cherry-pick命令,則除了ref以外的所有更改都相同。 您將從第一步獲得此參考。 用它和櫻桃挑選你的CL到本地倉庫。
上載新補丁集
git push origin HEAD:refs/changes/< current_patchset_number+1 >/< change_number >
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.