我有一种情况需要构建一组不同版本的Android源代码的静态副本。
简单地执行repo init -b $version; repo sync
将需要永远(init
需要互动,并且同步将浪费我的跨版本带宽)。
我目前的设置是下载一个基本版本(比如1.6_r1),将其复制到新文件夹(android-1.6_r2),然后重新运行init
并同步(repo init -b android-1.6_r2; repo sync
)。有时同步失败,错误如:
NDK /建造/平台/机器人-3 /弓形臂的/ usr /含
中止
同步工作树:100%(153/153),完成。错误:开发/:平台/开发结帐caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1 回复同步在android-2.1_r2.1s
上返回FAIL
我发现一些有类似错误的帖子表明这可能是由于repo与文件系统中的“已更改”文件不同步造成的,但我想知道我的错误是否是由repo的鼻子下的版本更改引起的。
这是更改存储库版本的正确方法吗?更一般地说,是否有时间/带宽有效的方式将android-1.6_r1
存储库转换为android-1.6_r2
?
答案 0 :(得分:9)
( UPDATE :我的初步答案意味着我们可以逐步初始化一个新的repo,例如1.6_r1到1.6_r2,但正确的设置应该是一个本地&# 34;主镜" repo我们可以在开始新的init时指向引用。我修改了下面的文本以避免错误的含义。)
尝试在新目录的--reference=/path/to/main/repo
命令中添加repo init
,而不是复制。
例如,如果您之前已在/repos/aosp-main
目录下载了一个仓库(并同步到googlesource.com),则可以执行以下操作:
$ mkdir /repos/aosp-1.6_r1
$ cd /repos/aosp-1.6_r1
$ repo init -b android-1.6_r1 -u https://android.googlesource.com/platform/manifest --reference=/repos/aosp-main
$ repo sync
然后,如果你想要一个不同的版本:
$ mkdir /repos/aosp-1.6_r2
$ cd /repos/aosp-1.6_r2
$ repo init -b android-1.6_r2 -u https://android.googlesource.com/platform/manifest --reference=/repos/aosp-main
$ repo sync
这样,当我们还没有下载新内容时,我们只需要同步到googlesource.com地址,它应该只使用已经同步的主仓库在本地初始化其他回购。
答案 1 :(得分:0)
您确定要更新repo脚本以确定吗?
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo