linux开发工具:repo

1:repo简单介绍

repo是Google开发的用于管理Android版本库的一个工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。repo不是用于取代git,而是简化了对多个Git版本库的管理。

repo可以帮助您统一管理多个Git版本库,包括但不限于:初始化、同步、提交、推送、拉取、合并等。

repo的使用方法如下:

  1. 安装repo

    $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo
    
  2. 初始化repo

    $ repo init -u git://github.com/android/platform_manifest.git
    
  3. 同步代码

    $ repo sync
    
  4. 提交代码

    $ repo start  ...
    $ cd 
    $ git add .
    $ git commit -m "commit message"
    $ repo upload .
    
  5. 推送代码

    $ repo upload .
    
  6. 拉取代码

    $ repo sync
    
  7. 合并代码

    $ repo sync
    $ repo start  ...
    $ cd 
    $ git merge 
    $ git commit -m "commit message"
    $ repo upload .
    

2:repo工作原理

谷歌其实是建立了一个 manifests 仓库来维护 Android 源码,而 mainfests 仓库保存这一个default.xml 文件,该文件就记录了 Android 源码中的各个子仓库的地址, 以及下载到本地哪个地方, 然后 repo 是用 python 编写的一个脚本, repo 脚本就会根据 default.xml 中配置进行批量下载:

linux开发工具:repo_第1张图片

manifest 的仓库地址如下所示, 也可以单独下载:

git clone git://mirrors.ustc.edu.cn/aosp/platform/manifest

打开.repo/manifests/default.xml


<manifest>
  <remote  name="aosp"
           fetch=".."
           review="https://android-review.googlesource.com/" />
  <default revision="refs/tags/android-10.0.0_r45"
           remote="aosp"
           sync-j="4" />

 <!—remote 标签指定远程仓库名字, fetch 是所有 git url 真正路径的前缀,所有 git  project name 加上这个前缀,就是 git url 的真正路径;review :指定 Gerrit 的服务器名,用于 repo upload 操作-->
 <!—default 标签设定所有 projects 的默认属性值,如果在 project 元素里没有指定一个属性, 则使用 default 元素的属性值 -->

 
 <project path="build/make" name="platform/build" groups="pdk" >
 <copyfile src="core/root.mk" dest="Makefile" />
 <linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk" />
 <linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default" />
 <linkfile src="core" dest="build/core" />
 <linkfile src="envsetup.sh" dest="build/envsetup.sh" />
 <linkfile src="target" dest="build/target" />
 
 <linkfile src="tools" dest="build/tools" />
 project>
 <project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" />
 <project path="build/kati" name="platform/build/kati" groups="pdk,tradefed" />
 <project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" >
 manifest>

你可能感兴趣的:(linux)