我遇到了一种情况,我需要构建一组不同版本的Android源代码的静态副本。
简单地做一个repo init -b $version; repo sync将花费永远的时间(init需要交互,而同步将浪费我跨版本的带宽)。
我目前的设置是下载一个基本版本(比如1.6_r1),将其复制到一个新文件夹(Androd-1.6_R2),然后重新运行init和repo init -b android-1.6_r2; repo sync。但是,同步有时会失败,出现以下错误:
ndk/build/platforms/android-3/arch-arm/usr/incl
正在中止
同步工作树: 100% (153/153),已完成。错误:在Android2.1_r2.1上返回的开发/:平台/开发签出caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1回购同步失败
我发现了一些类似的错误,表明这可能是因为repo与文件系统中的“已更改的”文件不同步造成的,但我想知道我的错误是否是由于在repo的鼻子下更改版本造成的。
这是更改存储库版本的正确方法吗?更普遍地说,是否有一种时间/带宽效率高的方法将android-1.6_r1存储库转换为android-1.6_r2?
发布于 2011-11-16 07:23:45
(UPDATE:我最初的回答意味着我们可以从以前的回购逐步恢复,例如1.6_r1到1.6_r2,但是正确的设置应该是有一个本地的“主镜像”回购,在这里我们可以在启动新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地址时,我们还没有下载的新东西,它应该只是使用已经同步的主回购,以初始化额外的回复本地。
发布于 2011-11-16 03:21:52
你确保更新回购脚本只是为了确定吗?
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repohttps://stackoverflow.com/questions/8144448
复制相似问题