英文原文: Oracle Consolidates the OpenJDK 10 Repository Forest
Oracle 的 JDK 架构技术负责人 Joe Darcy 宣布 OpenJDK 10 软件仓库群(Repository Forrest)完成最终合并。这一合并是近一年前建议提出的,意在降低管理大量软件仓库群的开销。这些软件仓库是在 OpenJDK 发展史上经历次分裂生成的,并将在 OpenJDK 9 及以前的版本中继续存在。为此,JDK 中还创建了用于在合并和未合并版本间移动更改的工具。
在这次合并操作之前,OpenJDK 曾分裂为多个不同的 Mercurial 软件仓库群(通常也被称为 Hg 软件仓库,即“汞”),其中包含了如下的主要平台组件:
这导致了多个问题,例如不能以原子方式对多个软件仓库应用漏洞修复(Bug Fixes)。在 OpenJDK 合并完成后,只会有一个软件仓库,并复制在三个开发线上:
其中,Client 线和 HotSpot 线的开发也涵盖了整个 OpenJDK 软件仓库,只是保存为不同的开发线,因为在这些领域上的工作一般不会影响 OpenJDK 的其它领域,也不会被其它领域所影响。保持一个独立的开发线,只在有需要时才与主分支(Master)同步,这将简化 Client 线和 HotSpot 线代码的开发。
合并还会简化一些通用的开发任务。例如,要从代码仓库群中检出一个本地拷贝,目前或者需要使用tclone
(是 Hg 树扩展的一部分,用于处理代码仓库群),或者需要使用get_source.sh
脚本。而使用合并结构后,只需要一个简单的检出操作即可实现。另一个例子是创建变更集(Changeset),目前为止依然需要使用hgforest.sh
工具,实现将同一 Hg 命令应用到群中的所有代码仓库。
不幸的是,尽管新合并的代码仓库具有很多的优点,但是管理代码仓库群的工作并未完全结束。OpenJDK 9 使用的依然是旧的群格式,这意味着对于要应用到多个版本的 Java 上的更改(很多情况下通常是安全更新),依然需要应用到群上以及合并的代码仓库上。为解决这个问题,Oracle 的软件工程师,也是 OpenJDK 的提交者(Committer),Erik Joelsson 创建了一个工具,可以将一个补丁在合并格式与非合并格式间作相互转换。
最后需指出的是,首次合并工作中并未包括一些基于 OpenJDK 10 的项目,例如 Amber 和 Valhalla。但这些项目的合并版本有望尽快推出。