第一次接触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..xx
user tao.wang
port host gerrit
hostname 172.16..xx
user tao.wang
port
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 //.
# 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
 

sourceTree+gerrit管理代码的更多相关文章

  1. 如何在sourcetree 下提交代码到gerrit上

    gerrit的审核机制决定了提交到远程到代码并非远程master分支,而是/refs/for/master 分支,所以需要解决怎么在sourcetree下提交代码到/refs/for/master分支 ...

  2. [iOS]SourceTree+oschina实现代码远程托管

    在iOS开发, 涉及到多人协同开发的时候, 这个时候, 我们就得利用版本控制系统(例如GIT), 来合并和管理代码了, 今天我们来讲一下, 利用 SourceTree+oschina进行版本控制 先来 ...

  3. GitLal+sourceTree版本号管理

    GitLab+sourceTree版本号管理 假设把代码提交到github上,仅仅能是公开的,除非你花钱了,可是我不想花钱,所以我选择了gitLab作为gitserver,使用gitLab的详细过程例 ...

  4. ubuntu搭建gerrit+gitweb代码审核系统

    一.Gerrit的简介 Gerrit是Google开源的一套基于web的代码review工具,它是基于git的版本管理系统.Google开源Gerrit旨在提供一个轻量级框架,用于在代码入库之前对每个 ...

  5. Gerrit评审代码流程注意事项

    Gerrit管理CR流程时要注意下面两大事项: (一)格式规范 这部分主要是根据公司或者团队的要求规范来撰写格式,这里不做统一介绍了:格式规范的宗旨是让修改的代码和业务需求能够匹配.可追溯. (二)评 ...

  6. ios 开发中使用SVN管理代码

    今天新公司需要使用SVN管理代码,就在网上查看相关的资料,现在把相关用法记录下来: 1.使用的是这个软件Cornerston 网上有很多相应的下载链接,可以去查看 2.下载安装之后,首先需要添加仓库r ...

  7. 使用GIT来管理代码的心得

    使用GIT来管理代码,第一步当然就是下载一个GIT客户端(不知道是不是这么叫,但是觉得和客户端的功能差不多).电脑的操作系统是windows7的,所以下的是对应的GIT. 就是这玩意,安装的时候不停的 ...

  8. github的初次体验及管理代码的心得

    周六早上的课上,助教给我们演示了一遍如何上传和下载代码库,新建代码库等等,但是是在linux上的,而我的笔记本的操作系统是win7的.而在教室中的尝试因为网络原因,虽然可以上github的网站,但是下 ...

  9. 用开源中国(oschina)Git管理代码(整合IntelliJ 13.1.5)

    简介 开源中国提供了Git服务(地址:http://git.oschina.net/),在速度上比国外的github要快很多.使用了一段时间,感觉很不错.oschina git提供了演示平台,可以运行 ...

随机推荐

  1. MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份

    一.视图 -- view 视图:是一个虚报表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图有如下特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系 ...

  2. 'NoneType' object is not iterable

    "TypeError: 'NoneType' object is not iterable" 一般是返回值为None同时赋值给了多个变量

  3. Delphi X10.2 + FireDAC 使用 SQL 语句 UPDATE

    MainForm.Conn.StartTransaction; UserManagerQuery.SQL.Clear; UserManagerQuery.SQL.Text := 'UPDATE tab ...

  4. Django REST framework+Vue 打造生鲜超市(九)

    十.购物车.订单管理和支付功能 10.1.添加商品到购物车 (1)trade/serializer.py # trade/serializer.py __author__ = 'derek' from ...

  5. Hello——Java10新特性,请了解一下

    2018年3月20日,Java 10 正式发布! 相关地址: 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  6. jq跨域获取json

    <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" ...

  7. [LeetCode] 24 Game 二十四点游戏

    You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...

  8. Markdown 编辑器使用指南

    Markdown 编辑器使用指南 1.快捷键 加粗: Ctrl/Cmd + B 标题: Ctrl/Cmd + H 插入链接: Ctrl/Cmd + K 插入代码: Ctrl/Cmd + Shift + ...

  9. WebRTC 音频采样算法 附完整C++示例代码

    之前有大概介绍了音频采样相关的思路,详情见<简洁明了的插值音频重采样算法例子 (附完整C代码)>. 音频方面的开源项目很多很多. 最知名的莫过于谷歌开源的WebRTC, 其中的音频模块就包 ...

  10. DDCTF 2018线上赛writeup

    第一题: d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e ...