1      基本概念

1.1      Git:Git是一个版本控制的工具,类似于svn。

1.2      Gerrit:Gerrit是一个基于git的团队合作的工具,开发人员可以往上面提交代码,让同行审阅,再将代码入库。

1.3      Repo:Repo是一个管理多个git工程的工具,只能在linux下使用,在windows下,我们使用cygwin来模拟linux环境。

1.4      Jenkins:Jenkins是一个持续集成工具,主要运行编译任务,和打包任务等。

2      步骤

2.1      使用repo命令将Gerrit上的代码拉到本地。

  1. 新建一个空目录作为你的工作目录

  1. 在空目录下使用repo init命令来初始化,初始化后会生产.repo目录

repo init -u http://10.22.112.116:8080/repo/manifest -b dev_r6c20 -m ssh.xml --no-repo-verify

  1. 使用repo sync命令来拉取代码,第一次较为耗时,大概需要几分钟。

repo sync

2.2      使用repo命令为每个git工程创建本地的个人分支(个人分支名为用户名,比如w00418504)

  1. 使用git checkout命令创建本地分支,上流分支是dev分支

repo forall -j 4 -c "pwd && git checkout -b privatebuild/{username} origin/privatebuild/{username}"

2.3      修改你想修改的文件,并作出本地的commit。

  1. 修改你想修改的本地文件,并作出本地的commit到本地的个人分支上。
  2. 使用repo forall -j 4 -c "git fetch --prune"

2.4      使用repo命令同步远程的dev分支和本地的个人分支的代码。

Git fetch是将远程的git工程的修改拉倒本地缓存,但是不做同步。

  1. 使用repo forall -j 4 -c "git merge --ff-only origin/dev_r6c20 || git rebase origin/dev_r6c20"

Git merge -ff-only对于远程和本地没有同时修改的git工程可以做快速的同步,对于本地和远程都有修改的git工程会返回一个错误码,如果返回错误码,则调用git rebase可以同步本地和远程的代码。

2.5      使用repo命令将本地的个人分支推送到远程的个人分支

  1. 使用repo forall -j 4 -c "git push origin privatebuild/{username}:privatebuild/{username}"

Git push将本地的个人分支推送到远端的个人分支,如果远端不存在个人分支,则在远端创建个人分支;如果远端已经存在个人分支,则更新远端的个人分支。

建议使用强制同步: repo forall -j 4 -c "git.exe push --force-with-lease --progress origin localName:privatebuild/userName"

localName:在代码目录中右键,选择”Git Bash Here”,然后输入git branch,获取命令输出结果.

username:即为远端上创建的个人分支

2.6      使用jenkins页面启动需要的构建任务

  1. 通过http://10.93.96.164:8080/jenkins登录jenkins页面,点击PrivateBuildView。

  1. 选择需要编译的任务,比如Compile_Agent_Audio。

  1. 点击Build with parameter,见上图的红框。

  1. 在private_build_branch中输入自己的个人分支名字,如privatebuild/w00418504,然后点击“开始构建”进行个人构建。

3      注意事项

3.1      个人分支的同步问题

每个开发人员都有责任维护自己的个人分支与dev分支的同步问题,并维护好每个git工程中的本地的和远端的个人分支。另外除了个人分支,不要直接修改其他分支。

git如何做个人构建的更多相关文章

  1. 根据学习廖雪峰老师的git教程做的笔记

    根据学习廖雪峰老师的git教程做的笔记 安装git 进行git的配置 配置您的用户名和邮箱地址,使用--global 这个参数表明了在此台机器上的所有仓库都会使用该配置 $ git config -- ...

  2. linux服务器中Jenkins集成git、Gradle持续构建Springboot项目

    Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用.本章教大家如何在linux服务器中使用Jenkins自动发布一个可作为linux服务发布的Springboot项目. 自动 ...

  3. [CentOS]使用Jenkins配置Git+Maven的自动化构建

    背景 最近安装Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在90%以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形 ...

  4. jenkins git gradle android自动化构建配置

    需要安装软件(jenkins所在服务器): gradle.SDK 一.gradle安装(服务器部署的gradle版本需要等于或高于开发环境的gradle版本) 1.下载地址:http://servic ...

  5. 使用Jenkins配置Git+Maven的自动化构建

    Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...

  6. jenkins+maven+git+tomcat+salt自动构建

    jenkins 安装步骤 环境: centos7,jdk1.8.0,jenkins2.165,maven3.5.2 一. 安装配置java环境   JDK1.8下载地址:http://www.orac ...

  7. 前端项目中使用git来做分支和合并分支,管理生产版本

    最近由于公司前端团队扩招,虽然小小的三四团队开发,但是也出现了好多问题.最让人揪心的是代码的管理问题:公司最近把版本控制工具从svn升级为git.前端H5组目前对git的使用还不是很熟悉,出现额多次覆 ...

  8. Git钩子设置自动构建Jenkins

    打开Git仓库,找到对应的项目,点击“仓库设置”,左侧点击“管理Git钩子”,如下图所示: 因为是push之后触发自动构建的,选择“post-receive”进行编辑 #!/bin/bash #提取分 ...

  9. 【Git 】$ ./gradlew idea 构建一个idea的项目

    Welcome to Git (version 1.9.5-preview20150319) Run 'git help git' to display the help index.Run 'git ...

随机推荐

  1. 算法NB三人组

    #快速排序-除了python自带的sort排序模块之外就这个最好用,只需会这个就行,其他的排序了解就好,能用冒泡,插入..的都可以用快排快速实现 import random from timewrap ...

  2. Json API接口数据生成

    偶然发现,对前端数据模拟挺好用,没有跨域问题 https://myjson.com/

  3. oracle 的sys 和 system 账号

    sys 和 system 账号有啥区别?一直以来懵懵懂懂,只想当然的认为就是权限大小不一样. 但是,它们都是管理员? 现在,我知道有一个区别了: [sys]只能用sysdba身份登录(也许还有syso ...

  4. php 批量删除数据

    php 批量删除数据 :比如我们在看邮箱文件的时候,积攒了一段时间以后,看到有些文件没有用了 这时候我们就会想到把这些 没用的文件删除,这时候就用到了批量删除数据的功能,这里我是用了数据库原有的一个表 ...

  5. 九度OJ 1125:大整数的因子 (大数运算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:974 解决:494 题目描述: 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. ...

  6. Java类加载器(死磕3)

    [正文]Java类加载器(  CLassLoader ) 死磕3:  揭秘 ClassLoader抽象基类 本小节目录 3.1. 类的加载分类:隐式加载和显示加载 3.2. 加载一个类的五步工作 3. ...

  7. the ACID properties of HBase

    http://hbase.apache.org/acid-semantics.html Apache HBase (TM) is not an ACID compliant database. How ...

  8. Android笔记之平移View

    方法有多种,只讲一种 使用View.setLeft和View.setRight 对于wrap_content的View,要横向平移,setRight是必要的,否则View的宽度会被改变(right应设 ...

  9. [noi2002]M号机器人

    3030年,Macsy正在火星部署一批机器人.第1秒,他把机器人1号运到了火星,机器人1号可以制造其他的机器人.第2秒,机器人1号造出了第一个机器人——机器人2号.第3秒,机器人1号造出了另一个机器人 ...

  10. java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别

    方法1:采用 Object.toString()方法 在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用 ...