Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程
1、配置SSH key
i) 打開http://gerrit.baidu.com網頁,使用郵箱(不加後綴)和密碼登錄

Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

ii)打開設置頁面-SSH Public Keys,添加SSH Public Key

Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)
SSH Public Key的添加跟gitLab中key添加類似,可以參考!點擊“add”按鈕後會報504錯誤,點擊continue刷新頁面就添加成功了.

2、下載工程項目,projects→list,選擇要下載的項目
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

3、下載提交代碼的hook腳本
在倉庫目錄下執行命令:scp -p -P 29418 用戶名@gerrit.baidu.com:hooks/commit-msg .git/hooks/ 注意替換紅色部分的內容

執行成功的提示如下:
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

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

Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

Open:等待review的提交 Merged:審覈通過已經入庫的提交記錄 Abandoned:取消的review
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

添加其他人幫你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的提交

Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)
紅框中時本次提交修改的文件,點擊可查看詳細的修改行數
選中有問題的代碼塊,點擊彈出的×××小框“press C to comment”即可寫出原因或改進意見,點擊“Save”保存意見.
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

最後給本次提交打分,只有本次提交被+2之後纔可以入庫.
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

-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失敗,提示如下
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)
需要執行上面的“3、下載提交代碼的hook腳本”,
2、如果習慣使用source tree的可以在source中添加自定義的action
source tree自定義動作的入口:菜單欄 動作-→自定義操作
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)
提交review時候,在source tree commit時不要勾選push選項,然後執行自定義動作review, review動作的配置如下:
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)
修改完被打回的review,重新提交時,不要使用source tree提交,直接執行自定義動作updateReview, updateReview動作的配置如下:
Gitlab+Gerrit+Ldap+nginx+mysql 之 Gerrit 操作流程(二)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章