代码管理之结合repo和git搭建代码服务器

在管理android项目的时候,如果使用一个git仓库来管理整个android的源码的话,感觉总是不爽,所以谷歌引入了repo,说白了,repo其实就是一个python写的脚本,用于管理多个git仓库的代码,使得我们可以同时下载多个git仓库的代码,而这些git仓库的代码可以组成我们最终想要的整个大的工程的全部代码。总结一句话,repo是用来管理多个git仓库的工具。

那么如何搭建repo工程呢,我也查了很多,经过一段时间的摸索,终于搭建出了自己的repo工程,哈哈,以后终于可以将不相关的代码分来来用git管理了,下面总结一下repo的搭建。

原料需要:
repo脚本---这个网上有方法下载到,就是一个python写的脚本文件,注意是“一个”文件。
repo脚本工程,这个工程是一堆使用python写出来的脚本文件,包含repo脚本文件。

用一个简单的例子说明下搭建过程,假设我们要管理的代码结构如下:

platform/ ---|---src/
             |
             |---res/
             |
             |---libs/
             |
             |---Android.mk
             |
             |---AndroidManifest.xml


其中包括src/、res/、libs/三个文件夹和AndroidManifest.xml、Android.mk两个文件。我们考虑让三个文件夹,每一个文件夹都用一个git来管理,剩下的两个单独的文件也要用git来管理,但是这里出现了一个问题,如果这两个文件使用git来管理的话,那么就需要在platform文件夹下创建git仓库,而src/、res/、libs/下都各有自己的git仓库,这样的话就出现了git仓库的嵌套,虽然是可以的,但是管理起来很不方便,因此,AndroidManifest.xml、Android.mk两个文件我们创建另外一个文件夹build/,把这两个单独的文件放到build/文件夹下来管理,在同步代码的时候在下载到build/里后,使用copy的方式再copy到platform根目录中来,这样就避免了git工程的嵌套问题。总结一下,我们一共需要创建四个并列关系的git仓库---src、res、libs、build,加上repo使用到的管理这四个仓库的manifest的git仓库,我们总共需要创建5个git仓库才能使用“repo和git结合的方式”管理代码。那么服务器上platform文件夹下的远程git仓库结构就变成了:

platform/ ---|---src.git(git仓库)
             |
             |---res.git(git仓库)
             |
             |---libs.git(git仓库)
             |
             |---build.git(git仓库,只有Android.mk和AndroidManifest.xml两个文件的仓库)
             |         
             |
             |---manifest.git(git仓库,且只有一个文件default.xml)



思路清楚了,现在可以一步一步搭建repo了。
1. 拷贝repo脚本工程到服务器和客户端,并且配置repo的环境变量。比如拷贝repo/文件夹到/home/XXX/下(XXX是你的linux电脑的用户名)。

这时进入服务器和客户端的~/.bashrc中编辑环境变量

vim ~/.bashrc


在.bashrc文件最后添加这样一句

export PATH=/home/XXX/repo:$PATH


这样就添加了repo命令的环境变量。
我们可以在公司的服务器上建立一个git远程仓库来管理repo脚本工程,这样所有想使用repo的人都可以通过服务器clone下来repo代码。省的每个人都得从网上下载repo代码工程。

2. 制作多个git代码管理的仓库。在服务器电脑的根目录创建文件夹platform/,进入platform/文件夹,分别创建src/、res/、libs/、build/四个文件夹,使用这四个文件夹作为四个git远程仓库。分别创建好四个远程仓库,具体参考之前搭建git服务器的帖子。

代码管理之使用git搭建简单代码服务器


3.制作manifest远程仓库。manifest远程仓库是用于存储repo使用到的default.xml文件的,这个仓库里面只有一个文件----default.xml,仓库的创建方式跟普通的git仓库创建方式是一样的,存放manifest仓库的路径位置也是可以任意的,这里我们存放在跟其他四个仓库并列的位置,我们先假设创建好的manifest远程仓库的具体路径在服务器上的/home/XXX/manifest_file/文件夹里。这里最主要的还是default.xml文件的具体编写。直接上文件,请结合下面的知乎的帖子,看懂应该不难

怎么针对自己项目工程建立Repo管理多个git仓库?

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch=".."
          name="origin"
          review="http://10.0.2.15"/>
  <default remote="origin" revision="master"/>
    <project path="src"   name="platform/src"  />
    <project path="res"   name="platform/res"  />
    <project path="libs"   name="platform/libs"  />
    <project path="build"   name="platform/build"  >
      <copyfile src="AndroidManifest.xml" dest="AndroidManifest.xml" />
      <copyfile src="Android.mk" dest="Android.mk" />
    </project>
</manifest>


10.0.2.15是服务器的IP,review这句应该是以后搭建gerrit时用到的,如果不搭建gerrit的话应该没有用。

4.下载代码。上面是三步都完成之后,就可以尝试下载代码了,命令总共两条

repo init  -u ssh://git@10.0.2.15/home/XXX/manifest_file -b  master

10.0.2.15是git服务器的IP地址,git是我们的服务器的git用户的用户名,/home/XXX/manifest_file是存放manifest远程仓库的路径,-b后面跟的则是我们要下载哪个分支的default.xml。如果init的结果没有报错的话,就可以接着执行

repo sync

等到结束没有报错的话,应该是已经下载下来四个git的仓库的全部代码了。至此repo搭建完毕。只要明白repo是干嘛的,repo是怎么管理多个git仓库的,想搭建repo还是不难的。

搭建过程中在网上查了很多资料,下面的感觉很有用,在此感谢作者分享。
http://blog.csdn.net/lzpdz/article/details/51672161
https://www.zhihu.com/question/41440585
http://blog.csdn.net/luoshengyang/article/details/18195205
http://blog.sina.com.cn/s/blog_71f83a9201016kwe.html




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值