基本信息

源代码仓库

文档

参与进来

子项目

相关项目

其他

Apache 开发笔记

本页面旨在提供有关开发要点和开发者网站维护的一些基本背景信息。

概述

Apache HTTP 服务器项目使用 Subversion 托管其源代码。

要检出 2.4.x 分支

svn checkout https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x httpd-2.4.x

要检出当前开发版本(截至撰写本文时,为 2.5.x),请使用

svn checkout https://svn.apache.org/repos/asf/httpd/httpd/trunk httpd-trunk

提交者应通过 https 而不是 http 检出(以便他们可以提交更改)。有关 Subversion 的更多信息,请阅读 ASF 版本控制常见问题解答

开发人员继续努力维护 2.4.1 与未来 2.4 版本之间的模块兼容性,以供管理员和最终用户使用。

维护源代码

几乎所有与 Apache 相关的文件,包括实际源代码和非发行版文件,现在都保存在 SVN 存储库中。以下是应用更改的方式

  1. 开发人员检出一个他们想要处理的文件副本(在本例中为主干),到一个名为 httpd-trunk 的私有工作目录中

    % svn checkout https://svn.apache.org/repos/asf/httpd/httpd/trunk httpd-trunk

    此步骤只需要执行一次(除非私有工作目录被污染或删除)。提交者应在检出时使用 https 的 URL 前缀,以避免以后出现问题。

  2. 开发人员将他们的工作目录与对存储库所做的更改同步

    % svn update httpd-trunk

    这可能应该在高活动期间每天甚至更频繁地完成。

  3. 开发人员对他们的工作副本进行更改,确保它们有效,并生成一个补丁,以便其他人可以应用这些更改以对其进行测试

    % svn diff httpd-trunk/modules/http/mod_mime.c > /tmp/foo

    /tmp/foo 文件被发送到 开发者列表,以便他们可以考虑补丁的价值/有效性。值得确保您的代码遵循 Apache 风格,如 风格指南 中所述。

  4. 一旦其他开发人员同意更改是一件好事,开发人员就会将更改检入存储库

    % svn commit httpd-trunk/modules/http/mod_mime.c

SVN 子树

Apache SVN 存储库中的 httpd 子树下有几个不同的分支,它们与不同的版本相关。可以使用 SVN ViewCVS 页面浏览顶层。与 httpd 服务器源代码相关的主要子树是

httpd-2.4

要创建一个包含 2.4 源代码的目录树,并将其命名为 httpd-2.4,请将当前目录更改为树的目录,然后按如下方式检出 2.4 源代码

% cd /usr/local/apache
% svn checkout https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x httpd-2.4

httpd-2.5

如果您想检出开发的最前沿,即 httpd-2.5 开发树(计划发布 2.6),并将其命名为 httpd-trunk,请按如下方式检出

% cd /usr/local/apache
% svn checkout https://svn.apache.org/repos/asf/httpd/httpd/trunk httpd-trunk

httpd-site

网站曾经托管在 https://svn.apache.org/repos/asf/httpd/site/ 上。

现在托管在 GitHub 上,地址为 https://github.com/apache/httpd-site/

网站页面使用 Markdown 语法,当此存储库中提交更改时,相应的 HTML 文件会自动生成并复制到 https://httpd.apache.org/ 上。

httpd-dist

httpd-site 子树类似,此子树用于维护构成网站的文件 - 在本例中为 https://downloads.apache.org/httpd/。与之前的子树类似,服务器上的目录是此子树的检出工作副本。但是,由于这是一个分发目录,我们只将周围的文档和控制文件检入此子树 - 实际的 tarball 只是简单地复制到 www.apache.org

SVN URL 为 https://svn.apache.org/repos/asf/httpd/httpd/dist

提交者通常会在“发布”时处理此子树。这是一系列步骤,用于创建 Apache httpd 软件的完整新版本。除其他事项外,此子树的关键是 tools/ 目录,其中包含 release.sh shell 脚本。有关发布发布相关的策略和程序的更多信息,请参阅 发布指南 页面。

设置远程 SVN

有关开始使用 SVN 提交者访问的简要概述,请参阅 此处。需要注意的一个关键变化是,由于 SVN 的功能差异,SSH 不再用于提交者访问。

使用 git / GitHub

我们的项目由 GitHub 以只读方式镜像,用户贡献者偶尔会在那里打开拉取请求。我们无法直接接受/关闭拉取请求,但我们可以评论/审查,然后提交补丁。提交消息可以包含短语“这关闭了 #X”,其中 X 是拉取请求号,它将在界面中突出显示。

关闭拉取请求的示例修订版为 https://svn.apache.org/viewvc?view=revision&revision=1780308

持续集成 (CI)

GitHub Actions CI 服务正在使用。

此服务使我们能够在不同的处理器、操作系统、不同的 gcc 版本、不同的库版本以及不同的配置下自动构建 httpd。在成功构建后,我们的 Perl 测试框架 也会自动执行。

所有这些都针对每次提交执行。

目标是尽早发现新的构建问题和回归。

如果提交者想要提交某些内容,而不会触发整个过程(例如文档更改或 STATUS 更新),他们可以在提交消息中添加神奇的“[skip ci]”关键字。

以下是 最新的构建结果