Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程相关的知识,希望对你有一定的参考价值。
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程
1、配置SSH key
i) 打开http://gerrit.baidu.com网页,使用邮箱(不加后缀)和密码登录
ii)打开设置页面-SSH Public Keys,添加SSH Public Key
SSH Public Key的添加跟gitLab中key添加类似,可以参考!点击“add”按钮后会报504错误,点击continue刷新页面就添加成功了.
2、下载工程项目,projects→list,选择要下载的项目
3、下载提交代码的hook脚本
在仓库目录下执行命令:scp -p -P 29418 用户名@gerrit.baidu.com:hooks/commit-msg .git/hooks/ 注意替换红色部分的内容
执行成功的提示如下:
4、提交review的流程
修改完本地代码后执行
1)git add.
2)git commit
3)git push origin branchName:refs/for/branchName //注意替换红色部分的内容第一个位本地分支名,第二个位远端分支名;我们实行强制review机制,直接执行git push会报错
4)打开http://gerrit.baidu.com,到ALL→Open列表中找到刚才提交的codeReview,打开后添加reviewer
Open:等待review的提交 Merged:审核通过已经入库的提交记录 Abandoned:取消的review
添加其他人帮你review代码
为了简化3、4步骤,同时避免分支名字写错的情况,可以使用以下脚本:
review.sh
#bin/bash
git_prefix=".git"
install_commit_msg(){
if [ ! -f ".git/hooks/commit-msg" ]; then
echo "请输入用户名(不需要加后缀)"
read username
gitdir=$(git rev-parse --git-dir);
scp -p -P 29418 ${username}@gerrit.baidu.com:hooks/commit-msg ${gitdir}/hooks/
if [ ! $? -eq 0 ]; then
echo "commit-msg下载错误"
exit 1
fi
fi
}
if [ ! -d "$git_prefix" ]; then
echo "! [Illegal git repository directory]"
echo " 移动脚本到git仓库根目录"
exit 1
fi
if [ ! -d ".git/hooks" ]; then
mkdir ".git/hooks"
echo "mkdir successfull"
fi
while getopts "m:c" arg
do
case $arg in
m)
echo "git commit -a -m ..."
install_commit_msg
git commit -a -m "$OPTARG"
;;
c)
echo "git commit -a --amend -C HEAD"
install_commit_msg
git commit -a --amend -C HEAD;
;;
esac
done
if [ -f ".git/HEAD" ]; then
head=$(< ".git/HEAD")
if [[ $head = ref: refs/heads/ ]]; then
git_branch="${head#/*/}"
else
echo "无法获取当前分支"
exit 1
fi
else
echo "没有git中的HEAD文件"
exit 1
fi
reviewers=("zhao" "cui" "zhang" "sun" "wang" "gao")
echo "当前分支为:$git_branch"
pushUrl="HEAD:refs/for/$git_branch%"
for reviewer in ${reviewers[@]}; do
echo "reviewer人员为${reviewer}"
pushUrl="${pushUrl}r=${reviewer},"
done
pushUrl="${pushUrl%,*}"
echo "pushUrl为:$pushUrl"
git push origin $pushUrl
if [ $? -eq 0 ]; then
exit 0
else
exit 1
fi
PS:1、修改脚本中的域名;2、修改成员:reviewers=("zhao" "cui" "zhang" "sun" "wang" "gao")
1)下载本脚本
2)添加到git工程项目目录下
3)修改脚本中62行,添加合适的reviewer
4)想要提交review时执行命令sh review.sh即可.
5、review别人代码
1)打开http://gerrit.baidu.com,到ALL→Open列表中找要review的提交
红框中时本次提交修改的文件,点击可查看详细的修改行数
选中有问题的代码块,点击弹出的×××小框“press C to comment”即可写出原因或改进意见,点击“Save”保存意见.
最后给本次提交打分,只有本次提交被+2之后才可以入库.
-1说明代码有问题,需要提交者修改后自次提交,再次审核,直到+2,点击submit入库
6、修改被打回的代码
修改好被打回的提交后,执行命令
git add .
git commit --amend //注意与第一次提交代码的区别,保证不会产生新的commitID和changeID,仍然使用上次的
git push origin branchName:refs/for/branchName //如果下载了review脚本执行命令:sh review.sh
说明:修改被带回提交时要保证修改的内容和开始创建review的提交在同一个提交里.
常见问题
1、clone第二个工程,提交review失败,提示如下
需要执行上面的“3、下载提交代码的hook脚本”,
2、如果习惯使用source tree的可以在source中添加自定义的action
source tree自定义动作的入口:菜单栏 动作-→自定义操作
提交review时候,在source tree commit时不要勾选push选项,然后执行自定义动作review, review动作的配置如下:
修改完被打回的review,重新提交时,不要使用source tree提交,直接执行自定义动作updateReview, updateReview动作的配置如下:
以上是关于Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程的主要内容,如果未能解决你的问题,请参考以下文章