历史: Linux 内核大概 2~3 个月推出一个新的版本,每次稳定版发布之后,Linus Torvalds 会打开一个为期两周的时间窗口,供各个子开发树提交代码并在两周后成为 rc1。随后两周时间一般仅接受小补丁或者与其他代码关联很小的驱动程序,并最终经过 7~8 个 rc 版本之后成为下一个稳定版。
问题:在两周的时间窗口中,会有多达1万个修改被融合进 Linus 的代码树。虽然大部分代码都只影响其所在的子树,但是总会有一些接口和代码的变动会对其他的代码产生冲突。现在这些子树的个数将近100 个,而且各自之间基本独立开发。这样就会产生如下问题: 1. 在融合代码的时候大量补丁相互冲突 2. 代码之间无冲突,也经常出现编译错误 3. 编译正常,偶尔也会出现运行时错误 诞生:这些冲突如此之多,以至于 mm 树的Andrew Morton不堪重负,于是产生了另外建立一个 linux-tree 的想法,以专门解决各个子树见的融合问题。Stephen Rothwell 毛遂自荐,成为 linux-tree 的开发者。目前包含了多达 141 个子树。最新的子树信息可以在 这里找到。 流程:每天,Stephen 都会试着将所有包含子树依次与 Linus 的主代码树融合并找到出现的冲突或者编译错误。原来 linux-next 树打算去掉任何导致冲突的子树。实际上, Stephen 通常会花时间找到问题所在,然后解决掉冲突或者通知子树的维护者进行相应的修改。 获取: $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git |