看到了 Twitter 上鲁宾对乔布斯简短的回复
看到了 Twitter 上鲁宾对乔布斯简短的回复,我把这一有趣的内容,加到筹划中的 Git book 中了。
5.6 Android 式多版本库协同
Android 是谷歌(Google)开发的手持设备的操作系统,提供了当前最为吸引眼球的开源的手机操作平台,大有超越苹果(Apple.com)的专有的 IOS 的趋势。Android 的源代码就是使用 Git 进行维护的,Android 项目在源代码管理上有两个伟大的创造,一个是用 Python 语言开发名为 repo 的命令行工具用于多版本库的管理,另外一个是用 Java 开发的名为 Gerrit 的代码审核服务器。本节我们重点介绍 repo 是如何管理多代码库的。 Android 的源代码的 Git 库有 160 多个(截止置2010年10月):- Android 的版本库管理工具 repo:git://android.git.kernel.org/tools/repo.git
- 保存GPS 配置文件的版本库git://android.git.kernel.org/device/common.git
- 160 个其它的版本库...
- 建立一个索引版本库,在该版本库中,通过子模组方式,将一个一个的目录对应到 160 多个版本库。
- 当对此索引版本库执行克隆操作后,再执行 git submodule init 命令。
- 当执行 git submodule update 命令时,开始分别克隆这 160 多个版本库。
- 如果想修改某个版本库中的内容,需要进入到相应的子模组目录,执行切换分支的操作。因为子模组是以某个固定提交的状态存在的,是不能更改的,必须先切换到某个工作分支后,才能进行修改和提交。
- 如果要将所有的子模组都切换到某个分支(如 master)进行修改,必须自己通过脚本对这 160 多个版本库一一切换。
- Android 有多个版本:android-1.0, android-1.5, ..., android-2.2_r1.3, ... 如何维护这么多的版本呢?也许索引库要通过分支和里程碑,和子模组的各个不同的提交状态进行对应。但是由于子模组的状态只是一个提交ID,如何管理分支, 我真的给不出答案。
the definition of open: "mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make"是的,就是 repo 让 Android 变得如此简单。