sourceTree+gerrit管理代碼

第一次接觸gerrit,會對這種代碼管理方式很是排斥,尤爲是習慣了用sourceTree配合git進行代碼管理的同窗。不爽歸不爽,代碼還得寫,咱們的目標是讓開發過程爽起來。git

關於gerrit的知識,移步這裏學習:【Gerrit】Gerrit工做流程及使用手冊github

不熟悉的同窗看完上面文章再繼續學習。shell

咱們遇到的問題主要有如下幾個:xcode

1 第一次拉取代碼以前,須要配置本地git環境ssh

1 sourceTree的某些功能不能使用了,讓人不爽。好比沒法直接pushide

2 提交代碼過程當中,若是衝突,gerrit默認不給merger權限。怎麼處理?學習

 

1、 首次git配置ui

1 設置Git的用戶名和郵箱google

 
$git config --global user.name tao.wang $git config --global user.email tao.wang@xxxxx.com

2 驗證spa

$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

 

2、sourceTree配合gerrit
主要問題在於沒法直接在sourceTree左上角push,咱們須要在終端操做,並且不能使用 
git push origin master
 

這是爲何呢?看過【Gerrit】Gerrit工做流程及使用手冊這篇文章的就會知道,gerrit增長了codereview的流程。因此會依賴一個臨時分支,咱們提交代碼須要提交到該臨時分支。

因此,使用如下命令拉取代碼:

git push origin HEAD:refs/for/master
 可是!有些同窗就是喜歡用sourceTree,漂亮又強大,忽然不能push代碼,很是慌!
爲了解決這個問題,網上看了不少帖子,其中Stack Overflow上的這篇帖子答案最標準:  https://stackoverflow.com/questions/9917645/push-to-gerrit-using-sourcetree
可是,實踐證實第一種方案不可用。就是
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建立一個自定義操做,配置以下,參數一欄是腳本所在路徑,請替換正確路徑

3 而後push的時候不要去選擇右上角push,而是選擇自定義操做push gerrit。
 
 完美解決,如今能夠丟開終端了。
 
3、衝突解決
 
由於gerrit默認沒有merger權限,因此當衝突以後,就算本地解決了,上傳的時候仍是會提示錯誤。怎麼辦呢?這時候把分支reset到最近一次沒有衝突的節點,將本身的改動stash,暫存。而後拉最新代碼,這時候不會衝突,由於你的工做區是乾淨的,而後應用stash,這時候就算衝突,你本地解決一下就能夠提交了。衝突解決有不少方式,這是我最經常使用的,你們須要多練習。
 
個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=2qill3xndu040
相關文章
相關標籤/搜索