repo 简单搭建学习记录
文章目录
一、repo 搭建
参考:
1、服务端
repo 需要一个服务端(manifest仓库),用来列出所有子仓库的路径等信息,如果在 github 等远程托管平台创建服务端,那么只要创建一个普通仓库并添加 default.xml
就行了。
如果要自己创建服务端,则使用 git init --bare
来创建一个裸仓库即可。
xml 文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github" fetch="https://github.com/用户名"/>
<default revision="master" remote="github" sync-j="4"/>
<project name="repo1" path="repo1" revision="master"/>
<project name="repo2" path="repo2" revision="master"/>
<!-- 更多项目... -->
</manifest>
- remote: 远程服务端,
name
可随意,一般取 origin - default: 设置每个项目默认的仓库和分支,
remote
指定了使用哪一个远程服务端 - project: 每个项目的 git 仓库
- name: 远程仓库的名称,不能随意取,必须和远端路径对上,否则无法找到远程仓库
- path: 对应仓库下载后想要保存在的本地路径
- revision: 分支名称或者 commit 哈希
另外,使用 HTTPS 的 URL 会导致每次提交修改都需要输入用户名和密码,很麻烦,以下是使用 SSH 的 xml 样例:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github" fetch="ssh://[email protected]/用户名"/>
<default revision="master" remote="github" sync-j="4"/>
<project name="repo1.git" path="repo1" revision="master"/>
<project name="repo2.git" path="repo2" revision="master"/>
<!-- 更多项目... -->
</manifest>
2、客户端
安装 repo/下载 repo 引导脚本:
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > /usr/local/bin/repo
chmod 777 /usr/local/bin/repo
这里只是下载了一个 repo 引导脚本,主体部分会在每次 repo init
时下载,所以为方便每次下载,可将 更改下载源环境变量的命令 添加进 shell 启动脚本(如 ~/.bashrc
):
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
创建一个文件夹来下载所有仓库,在其中使用 repo init
初始化
repo init -u https://github.com/用户名/manifest仓库名 -b master -m deault.xml
# 或者
repo init -u [email protected]:用户名/manifest仓库名.git -b master
-u
(–manifest-url): 指定 Manifest 库的 Git 访问路径。唯一必不可少的选项-b
(–manifest-branch): 指定要使用Manifest仓库中的某个特定分支-m
(–manifest-name): 指定要使用的Manifest文件。不指定的话,默认为default.xml文件
同步项目:
repo sync
运行该命令后会将 deault.xml
中指定的仓库克隆到指定路径
但是 repo sync
命令只同步检出当前远程仓库提交指针所指向的代码,克隆下来的仓库都是分离 HEAD 状态,并不会指向现有分支,可以使用 git checkout master
来正常使用。或者使用如下 repo 命令来在所有子仓库运行同一命令:
repo forall -c "这里填shell命令,可以不打引号"
-c
: 要运行的命令和参数,即shell命令。此命令会通过 /bin/sh 进行求值,它之后的任何参数都将作为 shell 位置参数传递。-p
: 在指定命令输出结果之前显示项目标头。这通过以下方式实现:将管道绑定到命令的 stdin、stdout 和 sterr 流,然后通过管道将所有输出结果传输到一个页面调度会话中显示的连续流中。-v
: 显示该命令向 stderr 写入的消息。
realTiX@local:~/Documents/proj$ repo forall -c "pwd"
/home/realTiX/Documents/proj/repo1
/home/realTiX/Documents/proj/repo2
realTiX@local:~/Documents/proj$ repo forall -pv -c "pwd"
project repo1/
/home/realTiX/Documents/proj/repo1
project repo2/
/home/realTiX/Documents/proj/repo2
更标准的做法是使用 repo start
命令来启动本地分支:
repo start master --all
二、repo 更多细节
【知乎】三步实现repo聚合本地git仓库
【Git?ee】Repo 工具使用介绍
【CSDN】git&repo入门
【CSDN】git repo工具详细使用教程
三、repo sync 如何指定 manifest 仓库版本
不能直接指定,只能 repo init -b
指定分支
或者专门对特定版本创建 xml 文件后使用 repo init -m
指定
四、manifest 仓库如何指定子仓库版本
revision 参数不能指定git tag,只能指定分支或哈希
标签:xml,git,记录,仓库,指定,manifest,repo,搭建 From: https://blog.csdn.net/realTiX/article/details/142501192