19

我已经使用以下命令下载了整个工作树:

repo init -u https://android.googlesource.com/platform/manifest
repo sync -j8

同步成功后,我想将工作树切换到 android 2.3.7。你看我在“repo init”时没有用“-b”参数指定分支。所以我想应该下载所有标签信息,我可以使用以下命令轻松切换到 android 2.3.7:

repo forall -c git checkout android-2.3.7_r1

但它会产生许多错误,例如:

error: pathspec 'android-2.3.7_r1' did not match any file(s) known to git.

那么如何在没有“repo init -b android-2.3.7_r1”和“repo sync”的情况下切换到 android 2.3.7 呢?

4

2 回答 2

24

您无法使用repo forall.

让我们确定您当前的 Android 树是干净的 - 没有本地更改或提交,即repo status没有显示任何内容。

要正确切换 Android 版本,您只需更改清单存储库的分支。首先确定具有不同 Android 版本的清单的可用分支:

cd $ANDROID_ROOT
cd .repo/manifests
git branch -av   # see all available branches on origin

选择一个版本并

cd $ANDROID_ROOT
repo init -b <my_selected_android_version>

repo init这种带有-b(不带)的选择性-u只会更新清单分支,并且不会以其他方式触及您的树。

现在,只需同步它:

repo sync -j8

一段时间后,您的 Android 树将切换到另一个版本。

default.xml此操作的速度主要取决于新旧 Android 版本之间的清单文件差异有多少- 因为如果在新清单中添加了一些 git 存储库,它将花费时间克隆它。如果某个存储库被删除,如果真的把它吹走。

但是,总的来说,这种方法仍然比从头开始初始化全新的 Android 树快得多。

于 2013-01-16T07:56:02.793 回答
1

如果您所在的分支和您将切换到的分支具有相同的 manifest.xml 文件,那么您可以使用以下命令来执行此操作。

repo forall -c git fetch aosp --tags 
repo forall -c git checkout -b john5.1.1_r14_api22 android-5.1.1_r14

另请参阅 http://johnliao52.github.io/2016/03/27/git-repo-skills.html中的详细信息

于 2016-03-31T08:31:29.743 回答