1. repo 的安装
一般服务器上都安装了git,所以只需安装repo即可
简单一点的方法,就是直接从253服务器拷贝
1.1 拷贝repo脚本
路径:/usr/bin/repo
拷贝到当前服务器的相同目录下,即/usr/bin
1.2然后拷贝repo程序目录到当前服务器
路径:elink-soft@192.168.2.253:/home/elink-soft/repo
拷贝到本地服务器任意目录
比如拷贝到/work/repo/下面
1.3然后用vim编辑repo脚本
1
| |
修改
1
| |
这句为之前repo程序目录的拷贝到的地址,如本处应改为
1
| |
2. git仓库的建立
2.1 服务器端:
此端建立git仓库,用于代码的下载,提交和管理
以192.168.2.96作为管理代码的服务器,elink账户作为代码管理账户
以89代码为例:
2.1.1
在elink的主目录下建立mq89目录,作为仓库的存放路径(m:mtk;q:quad;89:89 series)
2.1.2
在mq89下面分别建立2个目录:alps、manifest.git
1 2 3 | |
2.1.3
在manifest.git目录中创建空的git仓库
1
| |
2.1.4
很关键的一步,在alps下面创建**.git文件夹
规则:事先规划应该在哪些目录下面建立git仓库,以方便代码的管理。如,alps/kernel下面需要一个仓库,那么
就在alps目录下建立kernel.git目录,用于存放原始代码的远程仓库,然后初始化git,同2.3
1 2 3 | |
如果是abi/cpp/下面有个git仓库
则应该递归创建目录abi/cpp.git
1 2 | |
至此,服务器端的准备工作完毕
2.2 本机端:
此端作为原始代码的存放地,负责更新mtk的最新补丁,然后上传到服务器端
假设代码存放在mq89_std/alps目录下
2.2.1
创建本地的git仓库,和2.1.4的路径是相互关联
比如在服务器端有alps/kernel.git仓库
则在本地需有alps/kernel/.git仓库,即初始化git仓库是在kernel目录下
1 2 3 4 5 6 7 8 | |
如果是远程仓库abi/cpp.git
1 2 3 4 5 | |
2.2.2
克隆远程manifest.git目录,在mq89_std目录下
1
| |
此时
1 2 | |
注:关于代码中哪些目录需要建立git仓库
原则:为了方便以后代码的管理,如果在一个目录下拥有多个子目录,并且除去子目录以外没有其他文件,应该在各个子目录中分别建立git仓库。如,alps/mediatek的各个子目录。
还有我们应该按平台区分目录,在各个目录下创建git仓库,如,alps/mediatek/platform目录。我们应该在其下
的common和mt6589这2个目录分别建立git仓库,这样更方便以后的代码更新和管理
3. repo的管理
3.1 新建default.xml文件
在manifest目录下新建default.xml文件,此文件是repo管理的所有git仓库(project)
内容如下:
1 2 3 4 5 6 7 8 9 | |
注:
fetch后面的双引号填写代码存放的路径,remote name 和default remote的内容需相同,default revision指
远程的分支,这里填写的是默认分支master,sync-j表示的开启的线程数。
project内容的path变量表示本地存放的目录,name表示服务器相关git的存放路径,即DIR/alps/ndk/
3.2 git add default.xml并提交
1 2 3 4 5 | |
注:每次的更改都需要提交default.xml文件
4. 客户端的下载
比如下载到repo-client文件夹中
1 2 3 | |
即可以下载完成
5. 关于copyfile的使用
前面有提到过git仓库创建的原则,比如alps/mediatek/platform目录下,需要对common和mt6589,2个目录各创建一个git仓库,但是在alps/mediatek/platform下存在Android.mk和rules.mk 文件,如果只在common和mt6589这2个目录中建立仓库则会导致无法下载这2个mk文件,所以推荐的方法是在alps/mediatek/platform下面创建目录mtk,并将Android.mk和rules.mk这2个文件复制过去,下载的时候就可以通过copyfile去实现了
1 2 3 4 | |
同理alps下面的几个文件也是一样的情况,可以在build中穿件mtk文件夹
1 2 3 4 5 6 | |