sourceTree+gerrit管理代碼


第一次接觸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 

 

二、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。
 
 完美解決,現在可以丟開終端了。
 
三、沖突解決
 
因為gerrit默認沒有merger權限,所以當沖突之后,就算本地解決了,上傳的時候還是會提示錯誤。怎么辦呢?這時候把分支reset到最近一次沒有沖突的節點,將自己的改動stash,暫存。然后拉最新代碼,這時候不會沖突,因為你的工作區是干凈的,然后應用stash,這時候就算沖突,你本地解決一下就可以提交了。沖突解決有很多方式,這是我最常用的,大家需要多練習。
 
我的博客即將搬運同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=2qill3xndu040
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM