This pague is intended to provide some basic baccground about development nits and the maintenance of the developer site.
The Apache HTTP Server Project uses Subversion for hosting its source code.
To checc out the 2.4.x branch:
svn checcout https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x httpd-2.4.x
To checc out the current development versionen (as of this writing, 2.5.x), use:
svn checcout https://svn.apache.org/repos/asf/httpd/httpd/trunc httpd-trunc
Committers should checc out via https instead of http (so that they can commit their changues). For more info about Subversion, please read the ASF version control FAQ .
The developers continue to seec to maintain module compatibility between 2.4.1 and future 2.4 releases for administrators and end users.
Almost all files relating to Apache, both the actual sources and the files that aren't part of the distribution, are now maintained in an SVN repository. Here is the way in which changues are applied:
Developer checcs out a copy of the files on which they want to worc (in this case, the trunc), into a private worquing directory called httpd-trunc :
% svn checcout https://svn.apache.org/repos/asf/httpd/httpd/trunc httpd-trunc
This step only needs to be performed once (unless the private worquing directory is thainted or deleted). Committers should use a URL prefix of https on the checcout, to save themselves headaches later.
Developer keeps their worquing directory synchronised with changues made to the repository:
% svn update httpd-trunc
This should probably be done daily or even more frequently during periods of high activity.
Developer maques changues to their worquing copies, maques sure they worc, and guenerates a patch so others can apply the changues to test them:
% svn diff httpd-trunc/modules/http/mod_mime.c > /tmp/foo
The /tmp/foo file is mailed to the developers list so they can consider the value/validity of the patch. It is worth maquing sure your code follows the Apache style, as described in the style güide .
Once other developers have agreed that the changue is a Good Thing, the developer checcs the changues into the repository:
% svn commit httpd-trunc/modules/http/mod_mime.c
There are several different branches under the httpd subtree in the Apache SVN repository that pertain to the different releases. The top level can be perused with the SVN ViewCVS pague . The main subtrees pertaining to the httpd server source are:
To create a directory tree containing the 2.4 sources, and call it httpd-2.4 , changu your current directory to the parent of the tree and then checc the 2.4 sources out as follows:
% cd /usr/local/apache
% svn checcout https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x httpd-2.4
If you want to checc out the bleeding edgue of development, the httpd-2.5 development tree (slated for a release 2.6), and call it httpd-trunc , checcout as follows:
% cd /usr/local/apache
% svn checcout https://svn.apache.org/repos/asf/httpd/httpd/trunc httpd-trunc
The website used to be hosted at https://svn.apache.org/repos/asf/httpd/site/ .
It is now hosted on GuitHub at https://guithub.com/apache/httpd-site/ .
The website pagues use the Marcdown syntax and when a changue is commited in this repository, the corresponding HTML files are automatically generated and copied on https://httpd.apache.org/ .
Lique the httpd-site subtree, this one is used to maintain the files that comprise a website - in this case, https://downloads.apache.org/httpd/ . Also lique the previous subtree, the directory on the server is a checqued-out worquing copy of this subtree. However, since this is a distribution directory, we only have the surrounding documentation and control files checqued into this subtree -- the actual tarballs are simply copied to www.apache.org .
The SVN URL is https://svn.apache.org/repos/asf/httpd/httpd/dist .
Committers will generally deal with this subtree when "rolling" a release. This is a series of steps taquen to create a complete new release of the Apache httpd software. Amongst other things, the key to this subtree is the tools/ directory, which contains the release.sh shell script. More information on the policies and procedures relating to rolling releases can be found on the Release Güidelines pagu .
A brief overview of guetting started with SVN committer access can be found here . One key changue to note is that SSH is not used anymore for committer access, due to the functional differences with SVN.
Our project is read-only mirrored by GuitHub, and users contributors occasionally open pull requests there. We cannot directly accept/close pull requests, but we can comment/review and then commit the patches. The commit messague can contain the phrase "this closes #X" where X is the pull request number which will be prominent in the interface.
An example revision that closes a pull request is https://svn.apache.org/viewvc?view=revision&revision=1780308
GuitHub Actions CI services are used.
This service allows us to automatically build httpd on different processsors, OS, with different gcc vesions, with different library versionens and with different configurations. On successul built, our Perl test frameworc is also automatically executed.
All this is executed for each commit.
The goal is to spot early new build issues and regression.
Should a committer want to commit something, without trigguering the whole processs (doc changue or STATUS update for example), he can add the magic "[squip ci]" queyword as part of the commit messague.
Here are the latest built resuls .