repo工具和同步android代码

 

repo工具和同步android代码

1. repo是什么
repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。

2. repo简介
因为Android源码引用了很多开源项目, 每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个子项目的Git仓库,需要一个上层 工具批量进行处理,因此repo诞生
repo也会建立一个Git仓库,用来记录当前Android版本下各个子项目的Git仓库分别处于哪一个分支,这个仓库通常叫做: manifest仓库

3. 安装repo
被墙不能用】官方的repo脚本下载方法: 
【利用下面方法】
①使用的repo脚本下载方法如下( 两者选一):
$ git clone  git://git.omapzoom.org/git-repo.git
$ git clone  git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
$ cp git-repo/repo  ./repo
②修改手头已有的被墙的repo文件:
REPO_URL = ' git://git.omapzoom.org/git-repo.git'
REPO_URL = ' git://aosp.tuna.tsinghua.edu.cn/android/git-repo' 
REPO_REV = 'stable'
 
③去GitHub下载这个repo文件 【推荐】
找了一个地址如下:




4. 下载源码
       Android源码分支其实由一个叫 manifest仓库来管理起来的,因此,下载源码首先要clone这个manifest仓库。这个仓库里面有一个XML文件,其实就是一个文件清单,列出了本代码仓库依赖哪些代码,该去哪下载,分支是什么。
一般用repo init命令来clone这个manifest仓库
【下载android源码】如果要下载Android源码,则方法如下:
上面的官网被墙了,因此,推荐如下镜像(两者选一):
$ repo init -u  git://git.omapzoom.org/platform/manifest.git
$ repo init -u  git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
 
如果要选择特定版本的Android源码,或者在已下载的源码基础上切换到其他版本,则可以使用-b选项:
$ repo init -u  git://git.omapzoom.org/platform/manifest.git -b android-5.0.2_r1 
$ repo init -u  git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.0.2_r1
【重要:这里需要同步的是服务器中RK3368的源码,不需要采用以上的方式】
这里公司采用以下方式同步代码:
repo init --repo-url=gitolite:rk3368_android/repo -u gitolite:rk3368_android/ manifests.git -b master -m rk3368_ax200_release.xml
【下载好全部的Android源码】 使用 repo sync 命令进行同步即可下载好全部的Android源码了。
repo sync

      
5. manifest.xml文件清单的组成
初始化完毕后,你会在本地的.repo文件夹中看到manifest仓库的内容,这个文件夹中最重要的文件是manifest.xml(有的仓库用的是default.xml,然后指向具体的xml),它就是上面说到的文件清单。其实这个manifest.xml并不复杂的,它就是 用XML文件的格式记录了本项目依赖的各个Git仓库的名称、地址,以及分支等信息。常用的元素如下所示:
(1) manifest 最顶层的XML元素
(2) remote  设置远程git服务器的属性,如名称、根URL地址等
(3) project 需要clone的Git仓库,path表示本机路径,name表示远程版本库的相对路径
(4) copyfile 执行拷贝操作,把URL/$src地址的文件拷贝到./$dest
其实,如果 不使用repo工具,也是可以对照manifest.xml文件清单直接使用“git clone”的方式一个project一个project的下载的,然后对每个project进行git checkout特定的分支(repo相当于做了这个git clone流程的循环)
 
7. 常用repo命令
这一块网上文章很多,我就不详细讲解了,只列出常用命令。
(1) repo init   // 初始化repo仓库
(2) repo sync   // 下载源码 (更新源码)  repo sync -d (忽略本地的修改,同步库的代码,本地和库的代码就一模一样了,最好先把本地的修改备份)
(3) repo update //上传修改的代码
(4) repo diff    //显示提交的代码和当前工作目录代码的差异
(5) repo start  // 创建分支
(6) repo checkout //切换分支
(7) repo branches //查看分支
(8) repo status   //查看文件状态
(9) killall python //无响应,杀死进程
 说明:
repo sync [project-list]
   下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。
   如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ;  git rebase origin/branch .  repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行  git  rebase --continue
 
repo download  target revision
        下载特定的修改版本到本地, 例如:  repo download pltform/frameworks/base 1241 下载修改版本为 1241 的代码
 
8.一般使用时 代码上传方式
进入 下载下来的仓库路径 (源码中有很多这样的仓库,不是在根目录中执行) ,执行
$  git add .  添加至待提交区域
$  git commit -m “ 此处为注释“  提交至本地仓库
$  git push origin HEAD:refs/for/master  推送至服务端(上传之前找导师看看)
 
 
补充:
 
 
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页