Android repo命令和分支切换

27

我感觉我对git有很好的理解,但是当涉及到repo命令时,我就迷失了。我已经读了关于repo命令的文章,但我还是不确定它如何将所有内容联系在一起。

我的最大问题是能否将当前分支从gingerbread更改为ICS,然后可能再改回去?

我看到了这个命令:

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

据我理解,这将创建一个具有主分支的仓库。如果我想指定分支,可以执行以下操作:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

下载文件大约有8GB,我不想因为他们分享代码而丢失我的repo。是否有一种方法可以在repo中切换分支?

2个回答

62

如果你用不同的分支再次运行repo init,你只需运行repo sync,它将不会重新下载整个源代码。

第二次运行repo init时,只需运行以下命令:

repo init -b different_branch

您不需要再次提供 -u 参数。


1
请参考 https://groups.google.com/forum/#!topic/android-building/rtH5ZbJC7qU,它与此话题相同。 - execve

8

repo -b参数指定了.repo/manifests git仓库应该检出的分支。这个仓库中的default.xml文件定义了其他git仓库(项目)应该在哪个分支上。

似乎repo是这样编写的,如果你检出另一个清单分支并再次repo同步,它将通过网络再次拉取所有代码。

你可以运行repo forall -c 'git checkout branch_name',它将为当前清单中声明的所有项目检出指定的分支,但如果在gingerbread和ics之间添加/删除了项目(确实有),那么你将无法获得这些项目的代码。

在.repo/manifests仓库中运行git checkout branchname,然后运行repo sync可能会使您节省一些网络开销。

否则,由于repo的限制,唯一真正的方法是维护两个aosp的工作副本或准备好重新同步。


3
我知道这个帖子是几个月前发布的,但如果源代码已经下载过了,那么有关再次下载源代码的部分不再准确。 - gparent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接