Merge Monkey is a branch management tool. It is used for many Telepathy-related branches. Merge Monkey
- produces diffs between branches for reviewers; usually between the head of a project and a branch containing bug fix or a new feature
- runs tests when branches are merged
- generates email announcements when branches are merged.
Merges to Telepathy branches are announced on the telepathy-commits mailing list.
Merge Monkey updates its diffs every five minutes.
Merge Monkey code is available.
Adding a branch to the monkey
If you are submitting patches to Telepathy projects, you may be asked to give a git or darcs branch to the monkey for review. There are two ways to go about this. One way (if it's a darcs branch) is to give the URL of a branch to somebody who has access. They can mirror it on dhansak and add it to the monkey. The other way is to obtain an account on dhansak and add it to the monkey yourself:
Obtain shell access to dhansak; to do this, e-mail root <at> dhansak <dot> collabora.co.uk and include your name, preferred account name (no more than 8 characters), and an OpenSSH v2 RSA public key (usually ~/.ssh/id_rsa.pub), signed with your PGP key if you have one.
Make sure you are in the monkeys group.
- if you're using darcs:
ssh dhansak
mkdir ~/public_html/darcs
cd ~/public_html/darcs
- naming your branch something containing your username is recommended, e.g. smcv uses branches like gabble-smcv-refactoring
darcs get <project head> <name of your branch>
vi ~monkey/branches.list (use e.g. one of smcv's branches as an example)
- log out
darcs push dhansak:public_html/darcs/<name of your branch>
- if you're using git:
ssh dhansak
mkdir ~/public_html/git
cd ~/public_html/git
git clone --bare /srv/git.collabora.co.uk/git/<project>.git <project>.git (e.g. telepathy-haze.git)
vi ~monkey/branches.list (use an existing git branch as an example; repeat for each branch you're about to push)
- log out
git push --all dhansak:public_html/git/<name of your repo>.git
Your branch will be available from http://monkey.collabora.co.uk/ after about 5 minutes, and http://darcs.collabora.co.uk/ or http://git.collabora.co.uk/ after about 10 minutes.
(With time, this process should become easier as we have time to develop the monkey.)
Merging with the base branch
When your patches are reviewed and approved you can merge them with the base branch:
Make sure you are in the telepathy group on dhansak.
ssh dhansak
monkey-merge <path of your branch>
- log out
If you are not in the appropriate group, ask the reviewer to merge your branch.
Wish list
Missing features:
- how to see a specific commit from the merge mail? Add an URL in the merge mail, click on it and see the diff.
- Support remote git branches
- deal with newlines in a better way than just ignoring them.
maybe the list of patches should just use the shortlog (or whatever git folks call the first line of the commit) and the individual patch pages would have the shortlog as the <h1> and the rest of the content in nicely-formatted paragraphs.
- a way to sign off a set of revisions as having been reviewed.

