1、下载安装repo
git clone https://review.mfunz.com/git-repo git-repo.git
下载好后,进入到目录中:
cd git-repo.git
然后拷贝到相应目录,其实也可以自己通过设置绝对路径来完成,这里还是拷贝过去吧。
sudo cp repo /usr/bin/repo
修改repo脚本:
vim /usr/bin/repo
修改
REPO_URL = ‘https://gerrit.googlesource.com/git-repo’为REPO_URL = ‘/home/jared/test/git-repo.git’
因为我们已经下载了repo相关的代码,所以就指定到下载到的那个路径了。至此repo命令就可以正常使用了。
2、建立repo服务器
建立manifest
新建repos,然后创建manifest文件夹
mkdir manifest
新建defalut.xml文件如下:
<default revision="master" remote="origin" />
<project name="test1" path="test1"/>
<project name="test2" path="test2"/>
这里有两个仓库,test1和test2。接着我们就可以建立中心仓库了:
manifest git init
Initialized empty Git repository in /home/jared/test/repos/manifest/.git/
把刚添加的default.xml添加进去
manifest git:(master) ✗git add .
提交修改
manifest git:(master) ✗ git commit -m “init_repo”
[master (root-commit) 2694563] init_repo
file changed, 10 insertions(+)
create mode 100644 default.xml
新建manifest.git中心仓库。
repos git clone –bare manifest
Cloning into bare repository ‘manifest.git’…
done.
新建完后可以把manifest删除。
建立test1/test2仓库
新建test1文件夹并且添加个readme.md文件。
repos mkdir test1
test1 echo test > readme.md
初始化git仓库:
test1 git init
Initialized empty Git repository in /home/jared/test/repos/test1/.git/
修改提交:
test1 git:(master) ✗git add .
test1 git:(master) ✗ git commit -m “init repo”
[master (root-commit) 3a25343] init repo
1 file changed, 1 insertion(+)
create mode 100644 readme.md
新建test1中心仓库:
repos git clone –bare test1
Cloning into bare repository ‘test1.git’…
done.
至此test1.git中心仓库建立完成,同理建立test2.git仓库。
测试使用
既然已经建立好了,那么就来使用下吧,首先就是初始化repo了,相信命令会很熟悉:
work repo init -u ~/test/repos/manifest.git
Get /home/jared/test/git-repo.git
remote: Counting objects: 3725, done.
remote: Compressing objects: 100% (1755/1755), done.
remote: Total 3725 (delta 1910), reused 3725 (delta 1910)
Receiving objects: 100% (3725/3725), 3.39 MiB | 0 bytes/s, done.
Resolving deltas: 100% (1910/1910), done.
From /home/jared/test/git-repo
repo has been initialized in /home/jared/test/work
接着同步代码:
work repo sync
Fetching project test1
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
From /home/jared/test/repos/test1
[new branch] master -> origin/master
[new branch] v1.0.0 -> origin/v1.0.0
Fetching project test2
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
From /home/jared/test/repos/test2
[new branch] master -> origin/master
[new branch] v1.0.0 -> origin/v1.0.0
同步完成了,ls看下有没有两个仓库:
work ls
test1 test2
已经同步下来了,接着看下default.xml文件,之后如果需要增加其他的仓库就在这里添加:
work ls .repo/manifests
default.xml