Exim Development Using Git

The definitive exim git tree can be found at git://git.exim.org/exim.git with a web view available at http://git.exim.org/exim.git

The main developers may push into this tree using their ssh access to the development machine - the appropriate path is ssh://git.exim.org/home/git/exim.git - the developer will need to be a member of the eximdev group.

Repository Scope

The single development repository contains:-

The web site and other ancillary data is not contained in the main repository, but will normally be in other repositories under http://git.exim.org/

Enforcement and Checking Hooks

These hooks have not been implemented at this point, however it is intended that the following policies will be enforced on pushes to the repository - and we will also have an appropriate script so this can be added to your local repositories.

A hook which triggers on push to the main repo will also parse BugZilla related state commands in commit comments.

Other Repositories

Those with access to the development system can push repositories into the public_git subdirectory of their home directory - these directories will become visible on http://git.exim.org/ after a short interval, and may be accessed by others.

Those without access to the development system can use alternative git hosting solutions (such as github or Indefero) or their own hosting.

Github

There is also a repository at github in the Exim Organisation - the repository is at https://github.com/Exim/exim

At present the canonical repository is on git.exim.org - synchronisation with the github repo is a manual process. We will refine the github integration as we get time.

Development Process

Technical Setup

Others may disagree on this - this is my suggested setup as someone who has full commit access....

  1. Initially set your repository up using git clone git://git.exim.org/exim.git

  2. Ensure that your name and email address are set correctly (especially if the exim development email address you use is different to your default one - use git config command with keys user.name and user.email

  3. Ensure that the development machine has a public_git subdirectory of your home directory. Create an empty git repository within that directory - cd ~/public_git; git init --bare myrepo.git

  4. Set a new remote pointing to a new repo into your public_git subdirectory - ie git add mydef ssh://git.exim.org/home/nm4/public_git/myrepo.git

  5. Set up a second remote pointing to the main repository - ie git add mainline ssh://git.exim.org/home/git/exim.git

This allows you to pull easily from the mainline using a git pull command. You can push either to your own visible respository, or to the main repository as appropriate.

EximWiki: EximGit (last edited 2011-11-18 13:15:09 by NigelMetheringham)