您不能使用repo forall解决此问题.
让我们确定你当前的Android树是干净的 – 没有本地的更改或提交,即repo状态什么都不显示.
要正确切换Android版本,您需要更改的所有内容都是您的清单存储库的分支,如下所示:
cd $ANDROID_ROOT
cd .repo/manifests
git branch -av # see all available branches on origin
# choose one you want, check out to it:
git checkout origin/
注意,上面的命令将在清单repo中创建分离的HEAD.如果你不喜欢,添加–track(或-t)来创建本地跟踪分支:
git checkout --track origin/
更新2014/09/05:
对于最新版本的repo,上面的git checkout …将不能像以前那样工作,因为下一个repo sync会将manifest存储库恢复到在repo init中使用的分支.
但是这也意味着现在有更简单的方法来做你想要的,即:
repo init -b
这种具有-b(不含-u)的选择性备份初始化将仅更新清单分支,否则将不会触摸您的树.
现在,只需同步它:
repo sync -j8
一段时间后,您的Android树将切换到另一个版本.
此操作的速度主要取决于旧版和新版Android版本之间的default.xml清单文件的不同,因为如果在新的清单中添加了一些git仓库,那么将花费时间克隆它.如果某些资料库已被删除,如果真的会将其清除掉.
但是,总而言之,这种方法比从头开始创建全新的Android树还要快得多.