repo简介

repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现,并非为了取代git,而是为了让Android开发者更为有效的利用git。

Android源码包含数百个git库,仅仅是下载这么多git库就是一项繁重的任务,所以在下载源码时,Android就引入了repo。

repo需要关注当前git库的数量、名称、路径等,有了这些基本信息,才能对这些git库进行操作。通过几种维护所有git库清单,repo可以方便的从清单中获取git库的信息。这份清单会随着版本演进升级而产生变化,同时也有一些本地的修改定制需求,所以,repo是通过一个git库来管理项目的清单文件的,这个git库的名字叫做manifests。

当打开repo这个可执行的python脚本后,发现代码量并不大,难道仅这一个脚本就完成AOSP(Android Open Source Project)数百个git库的管理吗?并非如此。repo是一系列脚本的集合,这个脚本也是通过git库来维护的,这个git库的名字叫做repo。

在客户端使用repo初始化一个项目时,就会从远程把manifests和repo这两个git库拷贝到本地,这对于开发人员来说,又是近乎无形的(一般通过文件管理器,是无法看到这两个git库的)。repo将自动化的管理信息都隐藏根目录的.repo目录中。

repo sync

将本地仓库更新到最新状态。它会从远程服务器下载最新的代码,并将本地仓库与之同步。如果本地仓库中已经存在某个项目,repo sync会自动检测本地仓库中该项目的版本,并将其更新到最新状态。
类似于git fetch和git merge命令组合使用。它会更新所有远程分支,并将本地仓库合并到最新状态

repo sync -l

将本地仓库的代码与本地manifest文件所列的代码同步。它不会从远程服务器下载最新的代码,而是使用本地的缓存,将本地仓库中各个项目的代码回滚到本地manifest文件中所列出的特定版本或分支。这对于调试、测试或开发时离线工作很有用。
类似于git checkout命令,可以将本地仓库恢复到指定的分支或标签。但与git checkout不同的是,repo sync -l会同时更新所有依赖的存储库,从而确保各个存储库之间的版本兼容性

repo sync -c

只同步当前分支的代码,类似于git fetch --depth=1命令,它只会下载当前分支的最新代码。

repo sync -c --no-tags --prune -j 4。

查看 repo help status 的帮助信息,对所给的各个选项具体说明如下:

-c, --current-branch:fetch only current branch from server.
这个选项指定只获取执行 repo init 时 -b 选项所指定的分支,不会获取远端服务器的分支信息。
例如服务器上新增了其他分支,使用 -c 选项同步后,在本地 git 仓库执行 git branch -r 命令看不到服务器新增的分支名。如果不加 -c 选项,那么同步的时候,会打印 “[new branch]” 这样的信息,使用 git branch -r 命令可查看到服务器新增的分支。

--no-tags:don't fetch tags. 该选项指定不获取服务器上的tag信息。

--prune:delete refs that no longer exist on the remote.
如果远端服务器已经删除了某个分支,在 repo sync 时加上 --prune 选项,可以让本地仓库删除对这个分支的跟踪引用。
查看 repo 的 .repo/repo/project.py 源码,这个选项实际上是作为 git fetch 命令的选项来执行。查看 man git-fetch 对自身 --prune 选项的说明如下,可供参考:
-p, --prune
After fetching, remove any remote-tracking references that no longer exist on the remote.

-j JOBS, --jobs=JOBS:projects to fetch simultaneously (default 2).
指定启用多少个线程来同步。
例如上面的 -j 4 指定用4个线程来同步。如果没有提供该选项,默认启用2个线程。
总的来说,在 repo sync -c --no-tags --prune -j 4 命令中,使用 -c 和 --no-tags 选项可以减少需要同步的内容,从而减少要占用的本地代码空间,也可以减少一些同步时间。

使用 -j 选项来指定启用多线程进行同步,可以加快执行速度,也就减少了同步时间。可根据服务器CPU性能设置合适的多线程数目。
使用 --prune 选项去掉已删除分支的跟踪引用,一般不会用到,这个选项可加可不加。
 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白20200202

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值