Android repo技巧:详解repo status的输出结果概率错乱的原因

在用 repo status 命令查看 Android 源码的所有 git 仓库改动时,一般执行起来都比较慢,像是单线程执行,但实际上默认会启用2个选项来同步执行。

我们可以使用 repo status 的 -j 选项来指定执行时的多线程数目。查看 repo help status 对 -j 选项的帮助说明如下:

-j JOBS, --jobs=JOBS
number of projects to check simultaneously

Description
The -j/--jobs option can be used to run multiple status queries in parallel.

即,可以使用该选项来加快 repo status 命令的执行速度。例如 repo status -j 4

查看 .repo/repo/subcmds/status.py 的源码,如果没有提供 -j 选项,默认启用2个线程来执行,如下面的 default=2 所示:

p.add_option('-j', '--jobs',
             dest='jobs', action='store', type='int', default=2,
             help="number of projects to check simultaneously")

注意:repo status 命令启用多线程执行时,打印出来的信息概率会出现错乱,类似于下面的效果:

project test/vts-testcase/vndk/  branch local_branchproject toolchain/binutils/
branch local_branch

可以看到,上面的 project toolchain/binutils/ 本该另起一行打印,但是它跟前面的内容打印在了同一行。这是多线程同时输出导致的错乱。

之前编写 shell 脚本来过滤 repo status 命令的打印结果,想要打印只且打印发生了改动的信息,就遇到了这种输出信息错乱影响解析的情况

当时还奇怪没有用 -j 选项来指定启用多线程,为什么会有这个问题,查看 repo help status 的帮助信息,也没有说明默认会启用多线程。后来查看了上面的 repo 源码,才确认默认会启用2个线程来同步执行。

为了避免这种问题,建议在 shell 脚本里面用 repo status -j 1 命令明确指定为单线程执行,避免打印的信息错乱而影响解析。但是这样执行会比较慢,根据实际需求来取舍。


南木阁
考据党一枚,力求讲述的每个知识点都有出处,有理有据。如能恰好地解答您的疑问,欢迎点赞,谢谢!

解读权威文档,编写易懂文章。如有恰好解答您的疑问,多谢赞赏支持~

411 声望
326 粉丝
0 条评论
推荐阅读
Linux技巧:介绍安装完整 man 手册和其他查看姿势
本篇文章介绍在 Linux 中安装完整 man 手册、去掉 man 手册中文版本、和导出 man 手册的方法。安装完整的 man 手册在 Debian 系统、Ubuntu 系统中,可以执行下面命令来安装完整的 man 手册。这会安装系统函数、库...

霜鱼片阅读 6.7k

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go6阅读 2.9k评论 4

封面图
程序员英语学习指南
动机为什么程序员要学习英语?工作:我们每天接触的代码都是英文的、包括很多技术文档也是英文的学习:最新最前沿的技术最开始都是只有English版本就业:学好英语让你的就业范围扩大到全球,而不只限于国内目标读...

九旬7阅读 699

openKylin 0.9.5版本正式发布,加速国产操作系统自主创新进程!
2023年1月12日,中国桌面操作系统根社区openKylin(开放麒麟)正式发布openKylin 0.9.5操作系统版本。此版本充分适应5G时代需求,打通平板,PC等设备,实现多端融合,弥补了国产操作系统的短板,有效推动国产操作...

openKylin6阅读 8k

封面图
Git的一些最基础操作-以项目为例
在自己刚接触git的时候,心里一直有一个疑问,那就是什么是git?git能用来干什么呢?git是一个分布式的版本控制系统。 那么现在你就知道了,git肯定是用来管理代码版本的,而且还是分布式的。

淼淼真人2阅读 3.6k

git 多用户配置(多用户 & 公司/个人)
多用户配置公司和github,经常会遇到要多用户使用git的情况,以下为配置信息,以下拿xiaoxuete1 & xiaofute2举例设置ssh-key {代码...} 会提示存储的文件名,输入如果需要push时确认的密码,可在该步骤输入.pub文件...

小夫特1阅读 7.5k

工作中常用的git命令
在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像...

vipbic4阅读 996

封面图

解读权威文档,编写易懂文章。如有恰好解答您的疑问,多谢赞赏支持~

411 声望
326 粉丝
宣传栏