当前位置:   article > 正文

学习笔记-repo基本使用_repo init xml

repo init xml

一.init初始化

  1. $ repo init -u <URL> [<OPTIONS>]
  2. 示例
  3. repo init -u ssh://gerrit-sh.noboauto.com:29418/qcom/es17/manifest -b release/gwm_v35_tank

 首先当前目录产生一个.repo目录
然后克隆一份repo的源代码到.repo/repo下,里面存放了其他repo子命令,即repo的主体部分。
接着从manifest_git_path仓库地址clone清单库到.repo/manifests和.repo/manifests.git目录。
同时.repo目录下还包括manifest仓库(清单库)内容

1.1  .repo/ 文件夹

  1. huyiwen@460f67ae8ef4:~/code_tank$ cd .repo/
  2. huyiwen@460f67ae8ef4:~/code_tank/.repo$ ls
  3. gdcmanfiests manifests manifests.git manifest.xml repo
  • repo/manifests.git:此为repo配置信息的git库,不同版本包含不同配置信息
  • repo/manifests:此为repo配置信息的工作目录(将配置信息的工作目录和相应的实际git目录分离管理,并且配置信息中的.git目录实际只是指向实际git库的软连接),其中可能包含一个或多个xml文件描述的配置。每个xml文件是独立的一套配置,配置内容包括当前repo工作目录包含哪些git项目、所有git项目所处的默认公共分支、以及远端地址等。
  • repo/manifest.xml:repo工作目录中的内容同一时刻只能采用manifests中的一个xml文件做为其配置,该文件就是其软连接,通过init的-m选项指定采用哪个文件;另外,同一xml文件也可能处于manifests库的不同版本或者不同分支,通过init的-b选项指定使用manifests中的哪个分支,每次init命令都会从服务器更新最新的配置。这里通过-m指定的manifests中的xml文件中
  • repo/repo:此为repo脚本集的git库,用于repo管理所需的各种脚本,repo的所有子命令就是其中的对应脚本实现。该脚本也通过git管理,.repo/repo/.git为对应的git目录。这里包含repo命令所需的所有子命令脚本实现,由python完成

1.2 选项:

  • -u: 指定manifest仓库地址
  • -m: 选择仓库中某个manifest文件,如果没有设置,就使用default.xml
  • -b: 指定一个分支或修正版本

二.sync 同步项目文件

  1. repo sync [project-list]
  2. 示例:
  3. huyiwen@460f67ae8ef4:~/code_tank/.repo/manifests$ cd ..
  4. huyiwen@460f67ae8ef4:~/code_tank/.repo$ cd ..
  5. huyiwen@460f67ae8ef4:~/code_tank$ repo sync -c --no-tags

下载新的更改并更新本地环境中的工作文件。如果在未使用任何参数的情况下运行 repo sync,则该操作会同步所有项目的文件。

运行 repo sync 后,将出现以下情况:

  • 如果目标项目从未同步过,则 repo sync 相当于 git clone。远程代码库中的所有分支都会复制到本地项目目录中。
  • 如果目标项目以前同步过,则 repo sync 相当于以下命令:
  • git remote update
  • git rebase origin/branch
  • 其中 branch
  •  branch 是本地项目目录中当前已检出的分支。如果本地分支没有在跟踪远程代码库中的分支,则相应项目不会发生任何同步。

  • 如果 git rebase 操作导致合并冲突,使用常规 Git 命令(例如 git rebase --continue)来解决冲突。

  • 当冲突出现时,只需要解决完冲突,然后执行git rebase --continue即可。

repo sync 运行成功后,指定项目中的代码即处于最新状态,已与远程代码库中的代码同步。

选项:

-j:开启多线程同步操作,这会加快sync命令的执行速度,过多会起反作用。默认情况下,使用4个线程并发进行sync

-c : –current-branch:只同步指定的远程分支。默认情况下,sync会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间

--no -tags 不下载标签信息,可以加快下载时间

-d :  –detach:脱离当前的本地分支,切换到manifest.xml中设定的分支。在实际操作中,这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync, 则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败

-f :  –force-broken:当有git库sync失败了,不中断整个同步操作,继续同步其他的git库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/636859
推荐阅读
相关标签
  

闽ICP备14008679号