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脚本下载方法:
curl http://commondatastorage.googleapis.com/git-repo-downloads/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文件 【推荐
找了一个地址如下:
https://github.com/Jhuster/AOSP/blob/master/repo


4. 下载源码
   Android源码分支其实由一个叫 manifest仓库来管理起来的,因此,下载源码首先要clone这个manifest仓库。这个仓库里面有一个XML文件,其实就是一个文件清单,列出了本代码仓库依赖哪些代码,该去哪下载,分支是什么。

①一般用repo init命令来clone这个manifest仓库
下载android源码】如果要下载Android源码,则方法如下:
$ repo init -u https://android.googlesource.com/platform/manifest
上面的官网被墙了,因此,推荐如下镜像(两者选一):
$ 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/ s r c 地 址 的 文 件 拷 贝 到 . / src地址的文件拷贝到./ src./dest
其实,如果 不使用repo工具,也是可以对照manifest.xml文件清单直接使用“git clone”的方式一个project一个project的下载的,然后对每个project进行git checkout特定的分支。 (repo相当于做了这个git clone流程的循环)

6. 常用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 的代码

7.一般使用时 代码上传方式

进入 下载下来的仓库路径 (源码中有很多这样的仓库,不是在根目录中执行) ,执行
$ git add . 添加至待提交区域
$ git commit -m “ 此处为注释“ 提交至本地仓库
$ git push origin HEAD:refs/for/master 推送至服务端(上传之前找导师看看)

补充:
在这里插入图片描述
原文链接:https://blog.csdn.net/lijunjun1120/article/details/108720287

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值