第一次接觸gerrit,會對這種代碼管理方式非常排斥,尤其是習慣了用sourceTree配合git進行代碼管理的同學。不爽歸不爽,代碼還得寫,我們的目標是讓開發過程爽起來。
關於gerrit的知識,移步這里學習:【Gerrit】Gerrit工作流程及使用手冊
不熟悉的同學看完上面文章再繼續學習。
我們遇到的問題主要有以下幾個:
1 第一次拉取代碼之前,需要配置本地git環境
1 sourceTree的某些功能不能使用了,讓人不爽。比如無法直接push
2 提交代碼過程中,如果沖突,gerrit默認不給merger權限。怎么處理?
一、 首次git配置
1 設置Git的用戶名和郵箱
$git config --global user.name tao.wang $git config --global user.email tao.wang@xxxxx.com
2 驗證
$git config --global user.name // tao.wang
$git config --global user.email tao.wang@xxxxx.com // tao.wang@xxxxx.com
3 創建SSH Key公私鑰,並上傳gerrit。這個步驟大家很熟悉了。不知道的google。
4 配置本地gerrit
在之前創建的 .ssh文件夾中創建config文件(或直接拷貝配置好的config文件), config文件內容(注意user名稱換成自己的的賬戶名,port端口默認29418,有些公司會改,注意替換可用端口):
host gitserver hostname 172.16.99.xx user tao.wang port 29418 host gerrit hostname 172.16.99.xx user tao.wang port 29418 KexAlgorithms +diffie-hellman-group1-sha1
git push origin master
這是為什么呢?看過【Gerrit】Gerrit工作流程及使用手冊這篇文章的就會知道,gerrit增加了codereview的流程。所以會依賴一個臨時分支,我們提交代碼需要提交到該臨時分支。
所以,使用以下命令拉取代碼:
git push origin HEAD:refs/for/master
git config remote.origin.push refs/heads/*:refs/for/*
修改config文件,無效!
第二種是創建一個自定義操作,執行腳本,腳本去正確push。事實證明好用!
1 使用xcode創建一個shell腳本,內容如下
#!/bin/sh # push.sh # KeepRunning # # Created by 王濤 on 2018/4/27. # Copyright © 2018年 niujinfeng. All rights reserved. # 獲取當前分支名 branch=`git symbolic-ref --short -q HEAD` # push review git push origin HEAD:refs/for/${branch}
2 在sourceTree創建一個自定義操作,配置如下,參數一欄是腳本所在路徑,請替換正確路徑

