如何在本地回购中切换android版本?

Jia*_*Liu 16 tags git android repository git-checkout

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

repo init -u https://android.googlesource.com/platform/manifest
repo sync -j8
Run Code Online (Sandbox Code Playgroud)

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

repo forall -c git checkout android-2.3.7_r1
Run Code Online (Sandbox Code Playgroud)

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

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

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

mvp*_*mvp 21

你无法解决这个问题repo forall.

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

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

cd $ANDROID_ROOT
cd .repo/manifests
git branch -av   # see all available branches on origin
Run Code Online (Sandbox Code Playgroud)

选择一个版本和

cd $ANDROID_ROOT
repo init -b <my_selected_android_version>
Run Code Online (Sandbox Code Playgroud)

这种选择性repo init-b(无-u)将只更新清单分支,否则不会碰你的树.

现在,只需同步它:

repo sync -j8
Run Code Online (Sandbox Code Playgroud)

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

此操作的速度主要取决于default.xml新旧Android版本之间清单文件的差异 - 因为如果在新清单中添加了一些git存储库,则会花时间克隆它.如果删除了一些存储库,那么实际上是否会将其清除掉.

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

  • 似乎回购改变了,现在是`.repo/manifest``repo/manifests`? (3认同)