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
相关文章
相关标签/搜索