IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 多仓库管理工具git-repo部署 -> 正文阅读

[开发工具]多仓库管理工具git-repo部署

前言

在项目开发过程中,通常需要为不同的功能创建不同的repo(尽管有些大公司使用MonoRepo策略,例如Google,Uber,Microsoft…,我们可以简单的理解为team规模太大,沟通成本太高,通过单一的repo将间接地迫使不同team及时保持沟通。)

Google的Gerrit采用repo(The Multiple Git Repository Tool)来管理项目的多个仓库,它是在Git基础上构建的一个脚本工具,对于大型项目而言,这是种很好的管理方式。虽然我们采用的是Gitlab代码托管平台,但是我们也可以借鉴这种管理方式,来管理我们项目的多个仓库。

组成要素

采用manifest来管理多个远程仓库,需要三个基本要素:

  • 远程manifest仓库
  • 远程git-repo仓库
  • 本地repo脚本

其中“本地repo脚本”来源于远程git-repo仓库。

远程manifest仓库

manifest仓库主要包含一个或多个xml文件用来描述远程的多个仓库。repo工具根据这些描述信息来管理多个仓库。其格式规范参考
repo Manifest Format

我们需要在Gitlab上创建manifest仓库,这一仓库只有Maintainer有权限进行提交。

远程git-repo仓库

参考git-repo

这是官方完整的repo工具仓库,在本地初始化项目工程时,我们首先需要将这个仓库拉下来。之后我们就可以使用repo所提供的的丰富的功能了。

本地repo脚本

简单的repo工具,来自git-repo仓库,可以完成repo的初始化。

repo的使用

安装repo脚本工具

从repo使用指导(将客制化好的repo脚本上传服务器供大家下载)下载repo脚本
以ubuntu为例,进行安装

$ mkdir -p ~/bin
# 将repo拷贝到~/bin目录下
$ chmod a+rx ~/bin/repo
# 将~/bin添加到系统的PATH环境变量中(譬如添加到.bashrc或者.zshrc中,取决于你用的shell版本),譬如添加到.zshrc中

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
$ source ~/.zshrc

拉取远程仓库

$ repo init -u ssh://git@github.com:zhangsan/manifest.git -b master
$ repo sync

命名本地仓库的workspace的分支

$ repo start master --all

部署

这里我们首先说明repo初始化本地仓库的基本流程,然后再叙述如何将repo添加到自己的工程管理工作中。

repo初始化本地仓库

当我们要拉取整个工程的所有仓库时,通过以下两条条指令就可完成:

repo init -u ssh://git@gitlab.com:zhangsan/manifest.git
repo sync

第一条指令主要完成两个动作:

  • clone git-repo仓库到本地,并检出git-repo的默认分支
  • clone manifest仓库到本地,并检出manifest的默认分支

第二条指令根据manifest仓库中的xml文件的描述,拉取xml文件描述的所有远程仓库到本地,并在各个仓库中检出xml描述的revision分支。

clone git-repo仓库到本地,并检出git-repo的默认分支

该动作是根据本地repo脚本进行的,REPO_URL指定了git-repo的位置,REPO_REV指定了要检出的默认分支是哪一个分支。

默认情况下REPO_URL指向https://gerrit.googlesource.com/git-rep , REPO_REV指向main分支(git-repo的默认分支)。

由于墙的问题,大部分情况下从官方链接clone git-repo仓库都会失败。因此为了其他开发者的开发方便,我们需要将git-repo放到自己的Gitlab托管平台。并对仓库中的repo脚本做一些修改,让它指向我们Gitlab托管平台的git-repo仓库。我们将在后面git-repo客制化重点讲述这部分该如何做。

clone manifest仓库到本地,并检出manifest的默认分支

该动作根据命令行中的url来clone manifest仓库到本地,并检出默认分支(也可以在命令行中通过“-b <branch_name>”的方式检出指定的分支)

git-repo客制化

客制化的工作主要是将repo脚本的默认REPO_URL指向我们自己克隆的git-repo仓库。

第一步:

  • 在gitlab上创建空的git-repo仓库(如果能直接从 https://gerrit.googlesource.com/git-repo 导入最好,但是一般由于墙的存在,权限的问题无法导入成功)
  • 将官方git-repo仓库克隆到本地
  • 将本地仓库的所有分支和tag push到gitlab的git-repo仓库

第二步:

  • 从stable分支上检出一个新的分支customer,用来提交我们的客制化修改
  • 修改repo脚本的REPO_URL指向Gitlab的git-repo仓库(ssh://git@gitlab.com:zhangsan/git-repo.git)
  • 修改repo脚本的REPO_REV指向customer分支

第三步:

  • 替换PGP pubkey
  • 打GPG-signed tag
  • 提交分支和tag到远程仓库

manifest多版本管理

manifest多版本管理策略

manifest应该提供检出各仓库不同版本的功能。
各仓库需要检出的版本:

  • master分支:Developer需要
  • release分支:Maintainer需要
  • release小版本tag:Maintainer需要

为此manifest仓库需要对上述版本(分支和tag)创建对应的分支:

  • master分支
  • release分支
  • release 小版本分支

不同的manifest分支通过改变revision来检出不同的个仓库分支。

manifest多版本管理使用指导一节中
不同的初始化方式sync到本地的仓库都是相同的,只是各仓库(不包含git-repo和manifest仓库)默认检出的分支不同

manifest多版本管理使用指导

不同版本初始化使用示例

#在master分支上进行开发:
repo init -u ssh://git@gitlab.com:zhangsan/manifest.git -b master
#在已经发布的小版本上进行测试(为客户添加patch):
repo init -u ssh://git@gitlab.com:zhangsan/manifest.git -b sdk_v1.2.3
#在release分支上提交只有该release需要的patch(master不需要):
repo init -u ssh://git@gitlab.com:zhangsan/manifest.git -b sdk_v1.2_release
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:35:05  更:2022-10-22 21:37:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:26:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码