Gerrit,一種免費、開放源代碼的代碼審查軟件,使用網頁界面。利用網頁瀏覽器,同一個團隊的軟件程序員,可以相互審閱彼此修改后的程序代碼,決定是否能夠提交,退回或者繼續修改。
通常我們需要先將code提交到gerrit上,然后code review通過,才能正常合入,但是很多情況下提交的代碼需要在真實的持續集成中驗證這些已提交但為合入的代碼,那么我們怎么樣在生產環境中使用提交的代碼驗證?
下面說明一下怎么樣通過Gerrit id拉取提交未合入的代碼:
Gerrit_IDs=“123456,456789,789123” #gerrit id 可以是一個或者多個
if [ -d "$Gerrit_IDs"]; then
echo "=====checkout gerrit id:${Gerrit_IDs}...====="
change_ids=(${Gerrit_IDs//,/ })
for change_id in ${change_ids[@]}
do
change_ref=`ssh -p 29418 account@domain gerrit query --current-patch-set change:${change_id} | sed 's/\s*//g' |grep 'ref:ref' | cut -c5-`
git fetch ssh://xxxx@review.source.xxxx.com:29418/xxxx/xxxx ${change_ref} && git cherry-pick FETCH_HEAD;
done
fi
————————————————
版權聲明:本文為CSDN博主「kyrie_liu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/ryan_lyo/article/details/106021142
1.以上,如果執行cherry-pick(git fetch ssh://xxxx@review.source.xxxx.com:29418/xxxx/xxxx ${change_ref} && git cherry-pick FETCH_HEAD),和本地代碼有沖突的話,會提示有沖突,但是代碼會正常合並到本地,在本地正常解決沖突,再執行 git status ,根據提示,再執行git cherry-pick --continue,然后再執行 git push origin HEAD:refs/for/master 即可。
2.以下情況也可以用上面的流程處理:如果本地的代碼已經push到gerrit了,但是本地的branch或者本地的workspace已經刪除了,這時候,也可以使用上面的流程,根據change-id可以重新獲取已經提交的代碼,和本地最新的代碼合並,如果有充足就解決沖突即可
先執行:
ssh -p 29418 account@ip gerrit query --current-patch-set change:If1f90353e33957fd74b2fdac46a2c18c94a076f3 | sed 's/\s*//g' |grep 'ref:ref' | cut -c5-
上面的執行輸出為ref,然后再執行以下命令即可
git fetch ssh://account@ip:29418/live-service ref && git cherry-pick FETCH_HEAD
如果有沖突,會提示,本地解決沖突之后,執行git status,根據提示執行即可。
