学习笔记-repo基本使用

一.init初始化

$ repo init -u <URL> [<OPTIONS>]

示例
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/ 文件夹

huyiwen@460f67ae8ef4:~/code_tank$ cd .repo/
huyiwen@460f67ae8ef4:~/code_tank/.repo$ ls
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 同步项目文件

repo sync [project-list]

示例:
huyiwen@460f67ae8ef4:~/code_tank/.repo/manifests$ cd ..
huyiwen@460f67ae8ef4:~/code_tank/.repo$ cd ..
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库

如果你想使用token来拉取代码,可以按照以下步骤进行操作: 1. 首先,你需要在你的代码仓库提供商(如GitHub、GitLab等)上生成一个个人访问令牌(personal access token)。这通常可以在你的账户设置中找到。生成令牌时,请务必授予它拉取代码的权限。 2. 接下来,在你的本地机器上安装Git和repo工具。 3. 打开终端,使用repo init命令初始化一个仓库,指定你想要克隆的代码仓库的URL。 4. 在repo init命令后添加--repo-url选项,并指定你想要使用的代码仓库提供商的URL,例如:--repo-url=https://github.com/git/git.git 5. 在repo init命令后添加--manifest-url选项,并指定你想要使用的manifest文件的URL,例如:--manifest-url=https://github.com/my-org/manifests.git 6. 在repo init命令后添加--manifest-branch选项,并指定你想要使用的manifest文件的分支,例如:--manifest-branch=master 7. 在repo init命令后添加--reference选项,并指定你想要使用的本地代码仓库的路径,例如:--reference=/path/to/local/repo 8. 在repo init命令后添加--depth选项,并指定你想要拉取的代码仓库的深度,例如:--depth=1 9. 在repo init命令后添加--repo-token选项,并指定你生成的个人访问令牌,例如:--repo-token=abc123 10. 最后,运行repo sync命令,等待代码克隆完成。 注意:以上步骤中的选项值需要根据你的具体情况进行修改,以确保正确地拉取代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值