Archiveopteryx with Git

The Archiveopteryx source code is maintained in a Git repository. You can get a complete copy of the Archiveopteryx repository by running:

git clone git://

If you use github or gitorious you can also use the aox repositories there (aox at github, aox at gitorious).

Whatever method you choose, git clone will create a directory called aox containing the source code, almost as if you had downloaded Archiveopteryx. There are some minor differences: aox show build may report a misleading version number, and there is no Makefile. You build with Jam.

In the top-level directory you will find a text file called notes, which is used to track bugs, coordinate development, keep track of ideas and so on. Call it a bug tracker and wiki implemented using the sophisticated format ascii text.

When you compile, you'll get source code documentation in the doc/html and doc/man directories. If you set $MANPATH appopriately, man imaps will deliver the documentation for the IMAP class. We use a shell function to get access these manpages:

m() { man 3oryx $* }


When you clone the repository the master branch is checked out by default. This contains the latest stable release, plus any patches that will be included in the next stable release. It should be safe to run this version.

Other stable branches are rel/2.x and rel/3.0.x, representing the 2.x and 3.0.x release series respectively. These branches also contain the latest release plus any changes queued up for the next release. It should be quite safe to run the latest version from either branch.

There may be other branches; use them only if you know what they're for.

You can check out the rel/3.0.x branch with

git checkout -b rel/3.0.x origin/rel/3.0.x

This creates a local branch named rel/3.0.x that tracks the remote branch of the same name from the origin (i.e. You can keep running git pull to fetch new changes.

There's also a tag for each release, e.g. v3.0.4 for Archiveopteryx 3.0.4. To see a list of tags, use

git tag -l

You can also check out any given release into a new branch by doing

git checkout -b rel/3.0.4 v3.0.4

Making and contributing changes

If you want to change the Archiveopteryx source, you should definitely read the git tutorial. Once you've made the changes, you can use git-format-patch and git-send-email to send the diffs to us (at

If you'd like to chat to Abhijit and Arnt, they're both on jabber most of the time. Their jabber addresses are the same as their email addresses. Abhijit is also on various IRC networks, where his nick is crab.

If you don't like email, you can also push your code to a repository you clone from github/aox or gitorious/aox. As you please. But you have to talk to us — github is no substitute for human communication.

Git requirements

You need git version 1.5.4 or later to use this repository effectively.

$ git --version git version

At the time of writing, Debian includes packages only for the older 1.4.x. Use the packages from backports instead.

Graphs and similar

Github and Gitorious provide commit feeds (at github, at gitorious) and lists, graphs and more.

Ohloh provides some analysis and a committer list.

Don't trust these analysises too much. Ohloh names the GPL as the only license, which isn't exactly correct (we use the BSD license and one of us dislikes the GPL strongly). Both Ohloh and Github thinks most of the code is C, and only a little is C++. A more correct description is that one subdirectory contains C (the embedded copy of cryptlib), and all of our code is written in C++.

If you have any questions, please write to

Relevant links

About this page

Last modified: 2010-11-19