zoukankan      html  css  js  c++  java
  • 简单学习:repo入门

    一:关于repo

    repo是Google开发的用于管理Android版本库的一个工具,repo并不是用于取代git,而是用Python对git进行了一定的封装,简化了对多个Git版本库的管理。对于repo管理的任何一个版本库,都需要使用git命令进行操作。

    repo的使用过程如下:

    1.运行repo init 命令,克隆Android的一个清单库,这个清单库是通过xml技术建立的版本清单库。

    2.清单库中的manifest.xml文件,列出了160多个版本库的克隆方式。包括版本库的地址和工作去地址的对应关系,以及分支的对应关系。

    3.运行repo sync的命令,开始同步,即分别克隆这160个版本库到本地的工作区中。

    4.同时对160多个版本库进行切换分支操作,切换到某个分支。

    二:安装repo

    首相下载repo的引导脚本,可以使用wget,curl甚至浏览器从http://android.git.kernel.org/repo上下载。把repo脚本设置为可执行,并复制到可执行的路径中。在Linux上可以用下面的指令将repo下载并复制到用户主目录的bin目录下。

    curl -L -k http://android.git.kernel.org/repo >/bin/repo

    chmod a+x ~/bin/repo

    这里的repo只是一个引导脚本而不是直接称之为repo,因为repo大部分功能代码都不在其中,下载的只是帮助真个repo程序继续下载和加载的工具。

    三,repo和清单库的初始化

    下载并保存repo引导脚本后,建立一个工作目录,这个工作目录将作为Android工作区目录。在工作目录中执行repo init -u <url>,完成repo完整的下载及项目清单版本库的下载。

    mkdir working-directory-name

    cd working-directory-name

    repo init -u git://android.git.kernel.org/platform/manifest.git

    命令repo init要完成如下操作:

    1.完成repo工具的完整下载,现在仅有的不过是repo 的引导程序。初始化操作会从android的代码中克隆repo.git库到当前的目录下.repo/repo目录下。在完成repo.git克隆之后,repo init命令会将控制权交给工作区的.repo/repo/main.py。

    2.克隆android的清单库manifest.git(地址来自与-u参数)

    3.克隆的清单库位于.repo/manifests.git中,本地克隆到.repo/manifests。

    4.询问用户的姓名和邮件地址,如果和git默认的用户名,邮件地址不同,则记录在./repo/manifests.git库的config文件中。

    5.命令repo init还可以附带--mirror参数,以建立和傻瓜女友Android的版本库一模一样的镜像。

    3.1清单库是什么?从哪里下载?

    清单库实际上只包含一个default.xml文件,这个XML文件定义了多个版本库和本地地址的映射关系,是repo工作的指引文件,所以在使用repo引导脚本进行初始化的时候,必须通过-u参数指定清单库的源地址。

    清单库的下载,是通过repo init命令初始化时,用-u参数指定清单库的位置。例如repo针对Android代码库进行初始化时执行的命令:

    repo init -u git://android.git.kernel.org/platform/manifest.git

    repo引导脚本的init子命令可以使用下列和清单库相关的参数:

    -u:设定清单库的git服务器地址

    -b:检出清单库的特定分支

    --mirror:只在repo第一次初始化的时候调用,以和Android服务器同样的结构在本地建立镜像

    四,同步项目

    repo sync

    对于Android,这个操作需要通过网络传递接近2GB的内容,我们可以在repo sync后面跟上需要的项目的名称,项目的名称来自.repo/manifest.xml这个XML文件中project元素的name属性值。例如克隆platform/build项目:

    repo sync platform/build






  • 相关阅读:
    [bug] ERROR: Can't get master address from ZooKeeper; znode data == null
    [面试] 大数据
    [项目] 智慧出行
    [Linux] grep -v
    [Linux] > /dev/null 2>&1 &
    [bug] CDH报错:cloudera-scm-server dead but pid file exists
    [bug] CM / CDH 主机运行状态不良情况
    [bug] org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 2
    [其他] 记忆的奥秘(一)
    处理数字的类 —— Math类 、 Random类 、 BigDecimal类 与 BigInteger类
  • 原文地址:https://www.cnblogs.com/bill-technology/p/4130851.html
Copyright © 2011-2022 走看看