Differences between revisions 16 and 17
Revision 16 as of 2011-11-18 23:54:27
Size: 2418
Editor: domain
Comment:
Revision 17 as of 2011-11-19 00:01:15
Size: 2419
Editor: domain
Comment: change order of items for flow
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
 1. Each project has at least one GIT repository which contains the main project and is read/writable for all committers.
Line 13: Line 14:
 1. Each project has at least one GIT repository which contains the main project and is read/writable for all committers

This page collects the guidelines established in the git experiment.

This is a work in progress.

ASF GIT repositories are currently hosted at http://git-wip-us.apache.org/

For understanding the technical aspects of GIT and SVN please read SVNvsGIT. This will help you to grok the design decissions

GIT at the ASF is currently an experiment. We have defined criteria under which this experiment should be considered successful.

Project Structure

  1. Each project has at least one GIT repository which contains the main project and is read/writable for all committers.
  2. Each project can optionally have a separated PMC-private GIT repository which conains confidential legal stuff like trademark contracts, creds for community accounts like twitter, etc
  3. Some projects might need additional GIT repositories containing project parts which have a completely separated lifecycle from the main project. This can be various build-tools (checkstyle-rules, project specific maven-plugins which are needed to build the project) or the project site. This is needed because a GIT branch and tag always affects the whole repository

GIT Hooks

We need to apply some hooks to the GIT repos to prevent the user from changing a few things.

  1. It must not be possible to change the history of a project or delete certain branches. Any sha1 in master or any productive branch must not be allowed to get changed!
  2. git-rebase, git-stash and stashing via git-merge --interactive is only allowed if the history of external contributions remains preserved.
  3. It must not be possible to delete release tags.

Social Aspects

  1. Pulling from some external (non apache.org hosted) repository must only happen if all the respective commits are done by a person which has an iCLA on file.
  2. Incorporating changes from other contributors (no iCLA on file) must only be handled via JIRA attached patches because of legal reasons (the 'grant inclusion under ALv2' flag in JIRA).
  3. The project documentation and project site shall mention the apache.org based GIT repo as the canonical source location.

Cutting Releases with GIT

Apache Maven supports the usage of GIT with the maven-scm-providers-git since 2008.

Be aware that the branch created by a release with GIT always covers the whole repository.