我在repo工具上浪费的那些时间

3 篇文章 0 订阅
3 篇文章 2 订阅

 

题图:Photo by Pankaj Patel on Unsplash
本文原创发布于微信公众号“洛奇看世界”。

大概从2014年开始接触Android,也从那时起开始使用repo,但我从来没有认真去学习过repo的用法,每次都是要用的时候才去百度一下。以至于一直以来,只会repo init和repo sync这两个命令,前者用于下载manifest清单,后者根据manifest清单同步代码。尽管这两个命令很简单,但是我每次都要先copy别人的命令,复制粘贴后再修改一下。

像我这样机械地先copy别人的命令,改一改再运行,有跟我一样的嘛?

以下是一些我曾经或现在使用repo的场景,这些问题或许在别人看来都不是问题,但当时确实难倒我了,因此每次都要反复折腾,浪费很多时间。

最常见的有:

1. repo init操作时无法下载git-repo库

这是我使用repo遇到的第一个问题。'repo init'操作的第一步就是同步repo库,官方地址:
https://gerrit.googlesource.com/git-repo
因为一些众所周知的原因,无法访问这个地址并获取代码。

在公司可以翻墙,但是家里完全没有办法。情急之下,硬着头皮研究了repo脚本,最后把远程的repo库指向本地repo库才得到解决。后来还在CSDN上写了一篇通过设置REPO_URL环境变量,指向一个可访问的git-repo库来避开这个问题的文章。后来觉得这篇文章太low,自己删掉了。最近想恢复这篇文章,但是已经找不到了。

解决git-repo库无法访问的方式有几种,你都是如何解决的啊?

2. 多个版本代码的验证

常常需要在多个版本上验证Android的某个功能,看是否有差别。例如,需要在在Android N/O/P这三个版本上验证4k码流的播放,或者这三个版本在统一平台上启动速度的差别。

我以前是这么做的: 找三个平台和三个版本的代码,从零开始克隆manifest, 接着执行repo sync从0开始同步代码,然后坐等同步完成。

由于小组部门没有搭建专门的Android代码服务器,最近的代码也需要从北京的服务器同步,加之公司网速不好,完全同步一次差不多要一个白天或晚上,等同步完成才开始工作,还不用说有时同步失败的情况。反正同步一下一天就过去了。

这个描述虽然有些夸张,但这就是实际情况。

如果从其它版本的repo库上开始同步或本地搭建一个mirror镜像,这个问题很容易就解决了。但我当时根本不知道还有办法可以加快速度,只能说明我蠢啊~

3. 只有.repo目录

这是另外一个让人相当无语的情况。

有时候为了节省空间,会将工作目录下的代码删除,只对.repo目录进行打包。第一次拿到这个.repo目录时束手无策,不知道如何从.repo目录取出代码~

以前只知道repo sync可以检出代码,所以就在目录下执行一遍repo sync命令,结果一同步,manifest清单也跟着更新,代码变成最新的了。如果需要最新的代码这倒也无所谓,但很多时候只想验证某个特定版本的代码,这样同步根本拿不到想要的版本,简直就是噩梦啊。

后来学了一招,使用repo start命令新开一个分支,总算是解决了这个问题。但是我这人有强迫症,根本看不惯代码凭空多出来这么一个分支啊,十分不爽。

那时候根本不知道'repo sync -l'就是根据manifest指定的版本检出代码到本地工作目录,所以重新同步吧,又是一天过去了。

4. 从不在本地搭建repo镜像

以前知道repo init命令有一个'--mirror'选项,但不知道如何使用,所以从来没在本地使用过mirror功能,每次只能从远端同步,也是够够的了。

5. 不知道如何提交更改到gerrit

这是只有在进行代码review时才会进行的操作。印象特别深刻,因为第一次的时候囧到头了。

刚接触Android时接了一个任务,对4.4的KitKat版本添加ubifs文件系统支持。代码修改好了,但推送的补丁review没通过,要重新修改。修改完成后第二次推送失败了,如何正确推送,不知道啊~ 当时我是小组里第一个用repo的,也是第一个用git的,想找个人问问,没后对象啊。然后写邮件给老美求救如何进行推送,结果人家没回我。那时我觉得可以因为问题太低级别人不愿意回,现在想想,有可能别人漏掉了我的邮件,也有可能邮件没有写清楚,别人没搞明白。

无奈之下,买了蒋鑫的《Git权威指南》,花了几天看完终于知道如何推送了。

《Git权威指南》确实是本好书,非常全面,我看完基本就能给同事答疑各种git问题,并照着书上写的负责git服务器搭建和管理了,后来还给办公室的同事做了git培训。

 

啰嗦了一大堆,想说的是以前觉得repo只是个小工具,不需要花很多时间去学习,要用时网上查一查就好了。但最后在repo上浪费了很多时间。如果当初能花点时间学习整理下repo,可以省下更多时间,所谓磨刀不误砍柴工啊。

最近偶然发现,这么多年过去了,网上仍然没有全面系统介绍repo的文章,搜索的结果基本都还是一些repo基本用法的介绍,有的甚至连介绍都算不上。

于是萌发了想自己写点东西介绍repo的想法,但写东西终究是为了解决实际问题,所以想在这里了解下大家的想法,包括各种使用场景,各种常见的问题。如果你在使用repo时遇到什么困难或对repo的使用有什么心得或建议,请在留言区、公号后台或微信上一起探讨。我会收集这些问题,并整理共享出来,方便后来的人。


联系和福利

  • 本文原创发布于微信公众号“洛奇看世界”,一个大龄2b码农看世界。
  • 关注微信公众号“洛奇看世界”
    • 回复关键词“Android电子书”,获取超过150本Android相关的电子书和文档。电子书包含了Android开发相关的方方面面,从此你再也不需要到处找Android开发的电子书了。
    • 回复关键词“Git",获取经典的Git电子书

       

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

洛奇看世界

一分也是爱~

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

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

打赏作者

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

抵扣说明:

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

余额充值