由于android源码工程比较庞大,所以不能直接使用git来管理android系统源码,google开发出了repo工具来进行android系统源码管理。我这里在本地服务器中建立了一个git服务器,使用的是gitblit实现的,具体实现方式可参考网上资料。
1.manifest.git的实现
manifest.git仓库为用来管理工程中的其他git仓库的,里面填写了android系统代码中的其他git仓库的名称以及在本地的路径。
首先在gitbit建了一个名manifest工程的空仓库
在本地确定一个代码存放的文件夹,进入到该文件夹,然后执行git clone –u url 该url为manifest.git仓库的url,我这里是:
git clone –u http://[email protected]:10101/r/MPOSAndroidCode/manifest.git
成功后会在给文件夹中生成一个manifest的文件夹,进入到该文件夹,建立default.xml文件,该文件定义了需要使用repo管理的git仓库的名称以及仓库在本地的路径,以及仓库的url地址,我这里参考了知乎的一篇文章写得比较详细https://www.zhihu.com/question/41440585
我这里把我自己的default.xml文件贴出出来
xml version="1.0" encoding="UTF-8" ?> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fetch=http://[email protected]:10101/r/MPOSAndroidCode/
fetch这里表示远程仓库的url,注意这里的url并不是某一个仓库的url,而是该项目的名称,后面跟相应仓库的名称就是相应仓库的url了
project path表示了仓库在本地的相对路径,以manifest文件夹所在的文件夹为基本文件夹
name 表示了仓库的名称这个名称为创建仓库时的名称
这里default.xml文件就确定好了,可以在该文件中添加自己想进行管理的仓库。然后进入到manifest文件夹中使用下列命令
git add .
git commit –m “initial manifest ”
git push –all
将修改好的default.xml文件推送到服务器中。
2.repo工具的安装及配置
首先下载repo工具,如果不能从google下载,可以在清华大学和中科大的镜像下载网站进行下载,如在清华下载则进入到链接https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/地址根据说明文档下载或直接执行以下命令
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
如果下载不了,则可以使用git clone –u https://mirrors.tuna.tsinghua.edu.cn/git/git-repo命令将git-repo下载到本地,然后从git-repo将repo工具考被到~/bin目录下。
然后打开repo,设置REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'这里默认是google的repo仓库地址,这里替换为清华大学的地址。在执行repo init的时候会下载repo仓库或者执行export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'也是同样的效果。
执行repo init –u manifest的仓库url 命令,安装Repo仓库和Manifest仓库。其中,Manifest仓库的地址由-u后来带的参数给出。
执行成功后会在该文件夹下生成一个.repo的隐形文件夹,这个文件夹里面包含了repo仓库和manifest仓库
在gitblit中创建需要管理的仓库,仓库的名称需要和default.xml文件中的相符合。最后使用repo sync命令同步操作,将远程仓库中的使用repo管理的仓库同步到本地。这样在本地就可以使用repo对相应的git仓库进行管理了,具体的repo使用命令在此博客中说明的比较清楚https://blog.csdn.net/sunweizhong1024/article/details/8987494 ,具体使用可以参考该博客
注意,如果初始代码都在本地,则在服务器中建立仓库的时候不能建立一个空的仓库,至少需要包含readme文件,如果是空的仓库,则使用repo sync命令同步的时候会出错,同步失败。
同步成功后,则使用repo forall –c git checkout master 命令将所有管理的git仓库由origin/master分支切换到master分支。
然后repo forall –c git add . 将所有文件添加到暂存区,注意对于不需要进行版本管理的文件添加到.gitignore文件中。
然后repo forall –c git commit –m “日志信息”,进行提交
最后执行 repo forall –c push –all 将所有代码推送到git服务器中。
这样就把本地的代码进行了版本管理并且推送到远程服务器中,其他使用repo进行的管理参考上面的博客可以实现。
3.如何从服务器中下载代码
首先按照上面的说明下载repo工具并安装
然后执行repo init –u manifest url 连接命令进行repo仓库和manifest仓库的下载
最后执行repo sync命令进行同步,将服务器上的代码同步到本地
参考相关资料路径
https://blog.csdn.net/davidsky11/article/details/23291483
https://blog.csdn.net/obarong/article/details/79624468
https://blog.csdn.net/sunweizhong1024/article/details/8987494
https://www.zhihu.com/question/41440585
https://blog.csdn.net/kanyueliang410/article/details/79146145
如上面有不对的地方请多指正