搭建repo服务器管理多个git工程
创始人
2024-02-09 17:46:05
0

参考自:搭建repo服务器管理多个git工程
    repo系列讲解 —— Android系统源码(AOSP)下载

1、repo介绍

Android使用git作为代码管理工具,开发了gerrit进行代码审核,以便更好的对代码进行集中式管理。还开发了repo命令行工具,对git部分命令进行封装,将百多个git库有效的组织。

鉴于repo能够管理多个git库,针对一个项目需要多个git库分开管理,使用repo就非常方便。如嵌入式项目一般由uboot、kernel、文件系统rootfs、用户程序等组成。这里就以这样的项目组织来搭建repo服务器。

├── kernel
│   └── linux-3.5.y
├── rootfs
│   └── rootfs
├── uboot
│   └── uboot-2018.11
└── userdata└── UartTest

服务器:https://git.haier.net
账户:ihaier工号和门户密码

2、下载并配置repo工具

2.1 下载repo

git-repo下载可在服务器端通过以下任一方式下载。

git clone https://gerrit.googlesource.com/git-repo		(谷歌官方源)
git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo	(国内清华源)
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo	(国内中科大源)

将下载的git-repo切换到master分支,然后进行下面的修改。

在这里插入图片描述
此处修改的目的:在客户端上通过repo拉取服务器端代码时,避免 repo 从git-repo源码中拷贝过来,而是让其从我们的服务器上拷贝过来,这样既省时又稳定。

注意:也可在客户端下载repo,进行相应修改后上传服务器端。

在这里插入图片描述

2.2 安装repo

将下载的 repo安装到您linux账号的环境变量的路径下,推荐安装到/usr/bin/目录,由于写入/usr/bin/目录需要管理员权限,这需要您的linux账号拥有管理员权限。

sudo cp git-repo-haier/repo /usr/bin/repo   #此处需确保repo有执行权限

3、初始化工程和mainifest git仓库

3.1 初始化项目代码仓库(git server端)

在这里插入图片描述

3.2 初始化manifest仓库(git server端)

3.2.1 初始化 manifest (git server端)

在这里插入图片描述

3.2.2 mainfest 提交default.xml

在这里插入图片描述
x30-default.xml




● remote标签: 包含一些远程仓库的一些信息
(1) name:远程仓库在本地的别名,可以理解为讲解git仓库时提到的origin
(2) fetch:项目名称的前缘,在构造项目仓库远程地址时使用到
(3) review:code review的服务器地址

● default标签: 默认标签,下面的标签会默认包含这个标签的属性,当然也可以在里重新更改这几个属性
(1) revision:repo init -b的时候指定的分支或tag,默认是master分支。当然如果直接在manifests里切换分支并git pull,这里也会相应改变。
(2) remote:对应上面的标签的名字
(3) sync-j:指定同步工作的并行数量,个人理解最大数不宜超过cpu的线程数
(4) sync-c:【sync-c=“true”】代表repo sync的时候只同步revision指定的分支或tag

● project标签: 每个标签指定的都是一个git管理的源码库
(1) path:源码库下载后存放的本地路径
(2) name:远程仓库的名称

3.3 客户端git提交初始代码

以3.1图中tina3.5目录下build仓库为例,其他仓库同理。

cd tina3.5/build
git init
git add . -A
git commit -s -m "add initial code"
git remote add origin https://git.haier.net/zhjdn_ai/aiot_terminal/os/tina3.5/build.git
git branch -M master #此步可有可无,作用是将当前分支重命名为master
git push -uf origin master

4、repo拉取工程代码

在客户端上repo拉取服务器端代码

mkdir Haier-X30-Project
cd Haier-X30-Project
repo init -u ssh://git@git.haier.net:18022/zhjdn_ai/aiot_terminal/tools/git_repo/r328_tina/manifest.git -b master -m x30-default.xml
repo sync
repo start master --all # 全部下载完成之后,创建分支

repo init 参数
-u: 指定项目清单库的url地址
-m: 指定使用哪个项目清单文件
-b: 指定具体的分支,默认情况下指定master分支
--repo-url: 指定repo库的url地址
--config-name: 指定访问服务器的用户名和邮箱。这个选项后面不接内容,运行的时候会提示你输入用户名和邮箱
.
repo init主要有两部分工作:下载两个git管理的仓库(repo库和manifest库)。
repo库: 主要存放一些python脚本,配合之前说的repo脚本来共同管理众多源码仓库;
manifest库: 项目清单库,用来管理各个版本的清单文件。

在这里插入图片描述

5、repo常用指令

5.1 对每个git仓库执行相同的shell命令

用法:

repo forall -c "命令"         #不限于repo或者git的命令,其他shell命令也可以,例如ls,pwd等。

举例: 恢复用repo管理的系统源码

repo forall -c "git clean -df" && repo forall -c "git checkout ."

5.2 给整个工程打tag标签

git打tag命令:

git tag -a TAG_NAME -m "add tag TAG_NAME"

我们在此版本上打上标签为TINY4412_V1.0.0,命令如下

repo sync
repo forall -pv -c "git tag -a TINY4412_V1.0.0 -m "add tag TINY4412_V1.0.0""
repo forall -pv -c "git push origin TINY4412_V1.0.0"

5.3 帮助命令

用法:

repo help 命令选项

举例: 查看repo forall的使用帮助

repo help forallOptions:-h, --help            show this help message and exit-r, --regex           Execute the command only on projects matching regex orwildcard expression-i, --inverse-regex   Execute the command only on projects not matchingregex or wildcard expression-g GROUPS, --groups=GROUPSExecute the command only on projects matching thespecified groups-c, --command         Command (and arguments) to execute-e, --abort-on-errorsAbort if a command exits unsuccessfully--ignore-missing      Silently skip & do not exit non-zero due missingcheckoutsOutput:-p                  Show project headers before output-v, --verbose       Show command error messages-j JOBS, --jobs=JOBSnumber of commands to execute simultaneously

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...