Much could be said about the mercurial repositories. In a hurry:
- There are incoming repositories. New changesets are checked here:
- Changesets may be blacklisted and not accepted (only used if a rogue changeset is known to be escaped into the wild, hopefully never).
- Only the correct branch name is allowed.
- We only allow one head per repository. (If you need multiple heads you probably need different branches and repositories.)
- Python files (*.py) must be indented with spaces.
- Text files my not contain CRLF line breaks (aka DOS line breaks).
- The committing mail address must be known to this trac as a user mail address.
- Once the incoming checks are completed, the changesets are pushed to the outgoing repositories. We need special outgoing repositories, since mercurial shows new, un-checked changesets to the world before - in some cases - rolling them back. To avoid this race condition, we show the new changesets to the world only in these special repositories when the checks are completed. You cannot pull any changes from the incoming repositories.
- Everything pushed to the outgoing repositories is pushed to the special trac repository. This is a repository that contains all changesets from all outgoing repositories. Once Trac works with multiple repositories, this one will be dumped.
If the commit message contains string like #nnnn where nnnn is a trac ticket number, the commit message will be automatically copied into the trac ticket (as comment).