用一个简单的例子说明下搭建过程,假设我们要管理的代码结构如下:
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