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 <branch> <project>...
    $ cd <project>
    $ git add .
    $ git commit -m "commit message"
    $ repo upload .
    
  5. 推送代码

    $ repo upload .
    
  6. 拉取代码

    $ repo sync
    
  7. 合并代码

    $ repo sync
    $ repo start <branch> <project>...
    $ cd <project>
    $ git merge <branch>
    $ git commit -m "commit message"
    $ repo upload .
    

2:repo工作原理

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

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

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

打开.repo/manifests/default.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 标签name :git 的名称,用于生成 git url。URL 格式是:${remote fetch}/${project name}.git 其中的 fetch 就是上面提到的 remote 中的 fetch 元素,name 就是此处的 name path :clone 到本地的 git 的工作目录,如果没有配置的话,跟 name 一样remote :定义 remote name,如果没有定义的话就用 default 中定义的 remote namerevision :指定需要获取的 git 提交点,可以定义成固定的 branch,或者是明确的 commit 哈希值groups :列出 project 所属的组,以空格或者逗号分隔多个组名。所有的 project 都自动属于"all"组。每一个 project自动属于--><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" /><!-- src 表示在 build/make/tools 目录, dest 表示本地路径 build/tools 软件链接文件链接到 src--><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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19534.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中可以使用哪些系统架构?怎样选择?

架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度&#xff0c;通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architectu…

IDEA 导入多模块项目并设置运行

1、导入多模块项目 导入的步骤点击左上角File->New->Module from Existing Sources&#xff0c;最后点击选择项目的pom文件即可 2、设置模块 如果pom.xml文件是灰色并且有横杠&#xff0c;则需要这样设置&#xff1a; 把√去掉。 项目结构如图所示&#xff1a; 本项…

816. 数组翻转

链接&#xff1a; 链接 题目&#xff1a; 给定一个长度为 nn 的数组 aa 和一个整数 sizesize&#xff0c;请你编写一个函数&#xff0c;void reverse(int a[], int size)&#xff0c;实现将数组 aa 中的前 sizesize 个数翻转。 输出翻转后的数组 aa。 输入格式 第一行包含两个整…

【Docker】简单的Linux安装Redis

目录 Docker 安装 Redis拉取镜像安装容器修改配置文件容器随docker启动自动运行redis客户端 史上最详细Docker安装Redis &#xff08;含每一步的图解&#xff09;实战 Docker 安装 Redis 拉取镜像 docker pull redis安装容器 创建redis配置文件目录&#xff1a;如果内部没有相…

webRTC实现P2P音视频通话(无服务端)

文章目录 先看效果视频对话源码音频对话源码遇到问题解决方案 先看效果 视频对话源码 虽然是vue项目&#xff0c;但是我卸载了主页的index页面&#xff0c;仅仅为了测试&#xff0c; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

IDEA debug 断点调试技巧

1、首先看下IDEA中Debug模式下的界面&#xff1a; ① 以Debug模式启动服务&#xff0c;左边的一个按钮则是以Run模式启动。在开发中&#xff0c;我一般会直接启动Debug模式&#xff0c;方便随时调试代码。 ② 断点&#xff1a;在左边行号栏单击左键&#xff0c;或者快捷键Ctrl…

ceph用户认证

Cephx认证机制 ceph使用cephx协议对客户端进行身份认证 cephx用于对ceph保存的数据进行认证访问和授权&#xff0c;用于对访问ceph的请求进行认证和授权检测&#xff0c;于mon通信的请求都要经过ceph认证通过&#xff0c;但是也可以在mon节点关闭cephx认证&#xff0c;但是关…

Android AccessibilityService 实现《李跳跳》功能

AccessibilityService&#xff08;无障碍服务&#xff09;是 Android 操作系统中的一个功能&#xff0c;旨在帮助用户具有视觉、听觉或运动上的障碍更轻松地使用设备。它是 Android 提供的一种特殊服务&#xff0c;可以接收设备上发生的各种事件&#xff0c;并提供自定义的反馈…

【Java】链表LinkedList

文章目录 一、链表1.1 链表的概念1.2 链表的结构 二、LinkedList的简介三、LinkedList的使用3.1 构造方法3.2 常见操作3.3 遍历方法 四、LinkedList的模拟实现五、LinkedList 和 ArrayList 的区别 一、链表 1.1 链表的概念 链表&#xff08;Linked List&#xff09;是一种常见…

问懵了....美团一面索命44问,过了就60W+

说在前面 在40岁老架构师尼恩的&#xff08;50&#xff09;读者社区中&#xff0c;经常有小伙伴&#xff0c;需要面试美团、京东、阿里、 百度、头条等大厂。 下面是一个小伙伴成功拿到通过了美团一次技术面试&#xff0c;最终&#xff0c;小伙伴通过后几面技术拷问、灵魂拷问…

【Linux后端服务器开发】Shell外壳——命令行解释器

目录 一、Shell外壳概述 二、描述Shell外壳原理的生动例子 三、C语言模拟实现Shell外壳 一、Shell外壳概述 在狭义上 , 我们称Linux操作系统的内核为 Linux 在广义上 , Linux发行版 Linux内核 外壳程序 就比如市面上现在的redhat, centos, ubuntu等等我们耳熟能详的Linux发…

论文浅尝 | 少样本学习的语言模型的持续训练

笔记整理&#xff1a;王贵涛&#xff0c;东南大学硕士&#xff0c;研究方向为自然语言处理 链接&#xff1a;https://github.com/UIC-Liu-Lab/CPT 一、动机 克服灾难性遗忘&#xff08;CF&#xff09;是持续学习&#xff08;CL&#xff09;的一个主要目标。目前有许多方法&…