【问题标题】:How to switch android version in local repo?如何在本地 repo 中切换 android 版本?
【发布时间】:2012-12-10 02:16:24
【问题描述】:

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

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 呢?

【问题讨论】:

    标签: android git tags repository git-checkout


    【解决方案1】:

    您无法使用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 树将切换到另一个版本。

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

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

    【讨论】:

    • 看完你的帖子后,我意识到我误解了 git/repo 的一些关键方面。非常非常感谢!
    • repo 好像变了,.repo/manifest 现在是.repo/manifests
    【解决方案2】:

    如果你所在的分支和你要切换到的分支有相同的 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

    【讨论】:

    • 感谢提供有用的中文文档
    猜你喜欢
    • 1970-01-01
    • 2021-03-21
    • 2017-07-06
    • 2016-02-18
    • 2017-09-07
    • 1970-01-01
    • 2023-03-25
    • 2021-04-07
    • 2021-07-16
    相关资源
    最近更新 更多