赞
踩
用一个简单的例子说明下搭建过程,假设我们要管理的代码结构如下:
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)
这时进入服务器和客户端的~/.bashrc中编辑环境变量。
vim ~/.bashrc
在.bashrc文件最后添加这样一句。
export PATH=/home/XXX/repo:$PATH
2. 制作多个git代码管理的仓库。在服务器电脑的根目录创建文件夹platform/,进入platform/文件夹,分别创建src/、res/、libs/、build/四个文件夹,使用这四个文件夹作为四个git远程仓库。分别创建好四个远程仓库,具体参考之前搭建git服务器的帖子。
3.制作manifest远程仓库。manifest远程仓库是用于存储repo使用到的default.xml文件的,这个仓库里面只有一个文件----default.xml,仓库的创建方式跟普通的git仓库创建方式是一样的,存放manifest仓库的路径位置也是可以任意的,这里我们存放在跟其他四个仓库并列的位置,我们先假设创建好的manifest远程仓库的具体路径在服务器上的/home/XXX/manifest_file/文件夹里。这里最主要的还是default.xml文件的具体编写。直接上文件,请结合下面的知乎的帖子,看懂应该不难。
- <?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>
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。