Google Code-In 2014
Task Preview
HGBot: Check Branch HeadsCopyleft Games Group

HGBot is a Python program that automates our Mercurial repository management, handles Mercurial authentication, and provides user interfaces such as IRC.

While the hg command (and most UI wrappers) warns you that a push would create additional heads, many new Mercurial users don't understand what this is or how to fix it, so they re-run the command with -f (force).

Check that if the changegroup creates additional heads. While its common for a branch to fork (ie, two or more developers working at the same time), the latter changegroup in such scenarios must include a branch merge. If it does not, the changegroup should be rejected with an appropriate failure message.

The failure message should clearly explain what happened and how they need to fix it. This can include a URL, such as a Mercurial tutorial or a page on our wiki, but should also directly provide hg command suggestions without requiring them to read documentation.

To allow legitimate branching (eg, named branches), users with level Developer or Administrator should not be subjected to this test. Any user (including Contributors) should be able to merge branches.

While working on this task you should join and remain in #CopyleftGames on Freenode to get help, feedback, and guidance from mentors and other developers. Code updates which may affect your work are also announced here as they happen.

When you've done, commit your work and post the resulting changeset url to this task.