repo 使用

2023-10-29

repo 使用

repo start  ##创建并切换分支
repo start  newbranchname [--all | projectName]
repo start是对git checkout -b 命令的封装。git checkout -b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件中设定的分支的基础上创建特性分支。例如:(假设清单文件中设定的分支是stable2)
repo start  stable  --all(所有项目)
(对所有项目,在stable2的基础上创建特性分支stable。)
repo start  stable  platform/build platform/bionic
(只对platform/build、platform/bionic两个项目,在stable2的基础上创建特性分支stable)
repo checkout 分支名称  ##默认是切换所有仓库中的分支
repo checkout 分支名称 本地仓库相对路径 ##切换指定仓库的分支
repo merge --branch-name 源分支名称 --merge-message 提交说明  ##分支合并命令,此命令会跳过那些公共仓库(即单独配置了reversion的仓库)
repo branch  ##查看分支
repo manifest  ##查看清单文件
repo manifest -ro aaaaa.xml  ##生成tag文件
repo status(查看文件状态)
是对git diff-index、git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
repo abandon branchName ##删除分支
repo version  ##查看repo版本号
repo grep  ##在项目中进行内容查找
repo sync  ##默认同步所有仓,可以指定project 。
如果是第一次运行 repo sync ,则相当于 git clone,会把server所有内容都拷贝到本地。根据manifests中的xml文件中git的commit进行同步,这个xml文件在repo init的时候指定;
如果不是第一次运行 repo sync ,则相当于 git remote update ;  git rebase origin/branch 将server上的code与本地合并;如果在rebase 的过程中出现冲突,这需要手动解决冲突,然后运行:git  rebase --continue
注意:repo sync 是不会更新 .repo/repo这个仓的!会更新manifest仓库。
repo sync 的参数:
-j:开启多线程同步操作,会加快sync命令的执行速度。默认情况下,使用4个线程并发进行sync。 
-c, –current-branch:只同步指定的远程分支。默认情况下,sync会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间。 
-d, –detach:脱离当前的本地分支,将HEAD强制切换到manifest.xml中设定的分支,忽略本地的改动且不会覆盖掉本地修改。在实际操作中这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync, 则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败。 
--force-sync
overwrite an existing git directory if it needs to point to a different object directory. WARNING: this may cause loss of data
从说明来看,像是可以强制同步,且可能丢失本地改动。但是实际测试发现,这个选项并不能强制覆盖本地的改动。如果本地文件发生改动,加上这个选项sync依然报错。
目前没有找到 repo sync 命令可以强制覆盖本地修改的选项。
-f, –force-broken:当有git库sync失败了,不中断整个同步操作,继续同步其他的git库。 
–no-clone-bundle:在向服务器发起请求时,为了做到尽快的响应速度,会用到内容分发网络(CDN, Content Delivery Network)。同步操作也会通过CDN与就近的服务器建立连接, 使用HTTP/HTTPS的$URL/clone.bundle来初始化本地的git库,clone.bundle实际上是远程git库的镜像,通过HTTP直接下载,这会更好的利用网络带宽,加快下载速度。

repo init -u xxx/manifest.git -b xxx -m xxx --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable
repo相当于一个批处理文件,使用repo脚本可以一次下载多个Git 仓库的内容,避免多次git clone,并能进行更好的管理和使用。
用 repo 拿的时候其实 .git 统统会放在 .repo 里,然后外面的.git都只是link。

repo脚本有如下可用参数:
--repo-url=URL
repo 工具本身的 git 库地址。缺省为:git://android.git.kernel.org/tools/repo.git
--repo-branch=REVISION    使用repo的版本库,即repo git库的分支或者里程碑名称。缺省为caf-stable
--no-repo-verify                 设定不要对repo的里程碑签名进行严格的验证。
-u(--manifest-url)               设定清单库的Git服务器地址。
-b(--manifest-branch)        检出清单库的特定分支。
--mirror                              只在repo第一次初始化的时候使用,建立本地镜像
-m(--manifest-name)         指定清单库中的某个清单为有效的清单文件。默认为default.xml。
--no-tags                           don't fetch tags                                      
repo 命令参数的含义,可以执行repo help command(sync)来看。

命令rep init完成如下操作:
1.完成repo工具的完整下载,执行的repo脚本只是一个引导工具,并不是下载代码的脚本。
2.克隆清单库manifest.git到目录.repo/manifests/下。(地址来自于-u参数)
3.清单文件.repo/manifest.xml只是符号链接,它指向.repo/manifests/default.xml。
4.如果.repo/manifests/目录中有多个xml文件,repo init -m 参数可以任意选择其中一个,默认是default.xml。

清单文件解析:
一个清单库文件可以包含多个清单文件(标签include)。
manifest的3个属性revision、upstream、dest-branch:
revision:是修订的版本,通常指向一个具体的commit-id,repo sync之后会checkout到该commit-id;如果是分支名称,则repo sync之后,checkout到当前分支最新commit-id;
upstream:是一个分支名称,和revision匹配,如果revision是分支名称,则upstream不起作用,如果revision是commit-id,则upstream则是该commit对象所在的分支;
dest-branch:项目所属的目标分支,当使用repo upload(gerrit)命令的时候,代码会上传到该分支,如果不使用gerrit,可以不指定该值;
使用repo manifest -r查看当前的manifest信息;
remote元素:<remote  fetch="../"  name="origin"  review="http://IP:8080"/>
属性fetch:下载的相对路径
属性name:远程版本库命
属性review:基址
default元素:<default remote="origin" revision="branchName" sync-j="4"/>
设置默认版本库和分支。各个项目(project元素)可以定义自己的remote和revision覆盖默认的配置。
project元素:
<project name="device/mediatek/common" path="device/mediatek/common">
        <copyfile dest="mk" src="mk"/>
</project>

子元素copyfile:定义了克隆后的一个附加动作,从src拷贝到dest

以下命令非常有用!-p参数可以打印出project,注意顺序。
repo forall -p -c "git push origin HEAD:refs/heads/mtk_8.1_6763 2>&1 | tee" >> push.log

repo list    ##列出本地下载的所有project的path和name,冒号分隔。
Options:
-h, --help      查看帮助信息
-f, —fullpath    查看工程的完整路径
-n, --name-only  查看工程的名字
-p, --path-only  查看工程路径名字

repo forall [project-list] -c command
对指定的project列表或所有Project执行命令command,加上-p参数可打印出Project的路径。-c参数表示当前分支。
在每个项目中运行指定的 shell 命令。通过 repo forall 可使用下列额外的环境变量:
REPO_PROJECT 设为了项目的唯一名称。
REPO_PATH 是相对于客户端根目录的路径。
REPO_REMOTE 是清单中远程系统的名称。
REPO_LREV 是清单中修订版本的名称,已转换为本地跟踪分支。如果您需要将清单修订版本传递到某个本地运行的 Git 命令,则可使用此变量。
REPO_RREV 是清单中修订版本的名称,与清单中显示的名称完全一致。
工作运用:repo forall -c 'echo $REPO_PROJECT' > 102.list
repo forall -c 'echo =======$REPO_PROJECT======;git push --no-thin  ssh://xxx@xxx.com:29418/PHR/$REPO_PROJECT HEAD:refs/heads/xxx' (往另一个服务器push分支)
repo forall -c 'echo =======$REPO_PROJECT======;git remote add origin ssh://xxx.com:29418/$REPO_PROJECT' (添加remote)
repo forall -c 'echo =======$REPO_PROJECT ======;ssh gerritxx gerrit create-project xxx/$REPO_PROJECT --parent xxx/platform/art --branch master --empty-commit'(建仓库)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

repo 使用 的相关文章

随机推荐

  • win7官方原版iso镜像_教你从微软官网下载 Windows 10 原版 ISO 镜像

    到微软官网只能下载到Windows升级助手 或者Media Creation Tool 但这个工具制作U盘启动真是有点慢 不如直接下载Windows 10 的ISO镜像 再制作U盘工具 而且可以收藏 从第三方的渠道的确可以下载到Win10的
  • Subquery and Wrapping query

    Subquery Progressive query Into Wrapping query 1 Using fluent syntax string names Tom Dick Harry Mary Jay IEnumerable
  • odoo15 owl 组件实验

    视图有两种形式 一种是利用odoo MVC框架的QWeb模板引擎进行渲染 另一种是独立于odoo的模板引擎 利用前端框架搭建视图与用户交互 并调用odoo的控制器与odoo交互 odoo15提供了一套全新的前端框架owl 最主要的是owl的
  • 利用 AES 对 log4j 日志文件加密

    总览 本文简要介绍了 AES 算法加密的方式 以及如何利用 AES 对 log4j 输出的日志进行加密 背景 在互联网时代下 JAVA 大多用来做后端开发 由于后端的程序大多都部署在自己的服务器上 客户接触不到程序的日志文件 因此 多数情况
  • nacos无法正常下线问题记录

    问题描述 公司搭建了nacos集群 但是在微服务下线时会无法正常下线 点击下线提示 caused errCode 500 errMsg do metadata operation failed caused com alibaba naco
  • 基于vue2和element-ui的项目框架模板加强版

    前言 我的上篇博客讲了如何基于vue2和element ui搭建一个基础的项目框架模板 有兴趣的可以看下 文章有点长 这篇博客就谈谈可以在基础框架模板上增添哪些功能 ie兼容 ie兼容之前是让我很头痛的一件事 但经过我的反复摸索 百度 哈哈
  • Unity新手基础知识系列—序

    前提提要 本系列主要内容是根据 Unity中文文档来总结的 其实本人也是现在正在学习Unity相关基础 可能有一些理解不到位或者理解错误的地方 望大家指正 为什么写这个系列 1 为了记录自己学习的内容 方便以后自己再查阅 2 巩固知识体系
  • 力扣:只出现一次的数字

    给定一个非空整数数组 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 class Solution public int singleNumber int nums int result 0 for int
  • c语言字符串替换函数StrReplace(char strRes[],char from[], char to[])可直接使用

    将如下函数添加到文件中 可直接调用 StrReplace char strRes char from char to strRes 原始字符串 rom 需要替换的字符 串只替换第一次出现的位置 to 需要替换成什么字符串 成功返回 1 失败
  • 【牛客·剑指offer】Python JZ4二维数组查找、JZ3 数组中的重复数字、JZ5 替换空格、JZ6 从尾到头打印链表

    一 JZ4二维数组查找 描述 在一个二维数组array中 每个一维数组的长度相同 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序 请完成一个函数 输入这样的一个二维数组和一个整数 判断数组中是否含有该整数 1 2 8
  • 【Unity】模仿GUILayout.SelectionGird绘制一组互斥的按钮

  • STM32的中断介绍

    目录 一 STM32中断应用概览 1 简介 2 中断编程的顺序 1 使能中断请求 2 中断优先级分组 3 配置NVIC寄存器 初始化NVIC InitTypeDef 4 编写中断服务函数 二 EXTI 外部中断 事件控制器 1 简介 2 E
  • 解决dubbo问题:com.alibaba.dubbo.rpc.RpcException: Forbid consumer (很可能是一个访问都没有注册成功)

    线下环境经常出现类似这种异常 com alibaba dubbo rpc RpcException Forbid consumer access service from registry use dubbo version 2 5 3 P
  • CVPR2020超分辨率重建论文阅读笔记

    为什么要进行超分辨率重建 1 视觉效果不吸引人 2 影响下游方法使用 如分割等 3 电子显示产品分辨率提高 需要更高分辨率的图像 超分辨率重建问题面临难点和存在问题如下 1 病态问题 一对多 同样的LR图像对应无数解 2 MSE指标可能导致
  • STM32 基础系列教程 38 - Lwip_http

    前言 HTTP协议 HyperText Transfer Protocol 超文本传输协议 是因特网上应用最为广泛的种网络传输协议 所有的WWW文件都必须遵守这个标准 HTTP是一个基于TCP IP通信协议来传递数据 HTML 文件 图片文
  • CNN经典网络模型(四):GoogLeNet简介及代码实现(PyTorch超详细注释版)

    目录 一 开发背景 二 网络结构 三 模型特点 四 代码实现 1 model py 2 train py 3 predict py 4 spilit data py 五 参考内容 一 开发背景 GoogLeNet在2014年由Google团
  • @Validated 注解不起作用 怎么办?@Validated 无效 解决办法

    有一种可能是之前没有查到的 那就是pom缺少依赖 在项目的pom xml 文件中添加以上依赖 可有效解决问题
  • MySQL触发器trigger的使用

    Q 什么是触发器 A 触发器是与表有关的数据库对象 在满足定义条件时触发 并执行触发器中定义的语句集合 触发器的特性 1 有begin end体 begin end 之间的语句可以写的简单或者复杂 2 什么条件会触发 I D U 3 什么时
  • 线程的六种状态

    1 New 新建状态 线程刚被创建 start方法之前的状态 2 Runnable 运行状态 得到时间片运行中状态 Ready就绪 未得到时间片就绪状态 3 Blocked 阻塞状态 如果遇到锁 线程就会变为阻塞状态等待另一个线程释放锁 4
  • repo 使用

    repo 使用 repo start 创建并切换分支 repo start newbranchname all projectName repo start是对git checkout b 命令的封装 git checkout b 是在当前