一些项目可能会用到多个git项目库(例如我负责的使用了14个git项目),如果每次更新代码都要去库里git pull,非常耗时费力,所以repo库管理就显得非常重要了。
Repo是用python实现的,脚本本质仍然是通过Git来管理代码的,下面具体说下repo服务端仓库的搭建方法:
1、安装和配置相关软件
yum install python-setuptools git
easy_install pip
pip install git-review
git clone https://github.com/esrlabs/git-repo.git
cp git-repo/repo /bin/ && PATH=~/bin:$PATH
2、创建 manifest 仓库
在github/gitlab 上创建一个mainfest 仓库,默认分支为master,并且克隆到本地。
3、在mainfest库里增加xml 文件
thinkcloud_sds.xml 内容大致如下,其中remote、default 对应repo库管理的路径和分支,project 可以有多个,每个对应一个git项目。
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin"
fetch="https://github.com/username" />
<default revision="master"
remote="origin"/>
<project name="wencai1" path="wencai1 />
<project name="wencai2" path="wencai2" />
</manifest>
4、拉取所有git项目代码
创建新的目录并进入,运行如下命令
repo init -u https://github.com/username/manifests.git -m thinkcloud_sds.xml
repo sync
附:一些repo 用法
repor sync [<project>]
repo start new_branch_name [<project>…] || --all
repo branches
repo checkout branch_name
repo diff [<project>…]
repo stage -i [<project>…] 是对 git add -i 的封装
repo prune [<project>…] 删除已经合并的分支,是git branch -d 的封装
repo abandon <branchname> [<project>…] 是对git branch -D 的封装
repo status [<project>…] 是对git diff-index、git diff-filse命令的封装