GIT怎么样通过Gerrit ID拉取已提交未合入的代码

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,根据提示执行即可。

 

posted @ 2020-07-08 16:54  ismallboy  阅读(4011)  评论(0编辑  收藏  举报