General Information

For reference:
  • Repositories go in: /home/hg
  • The web interface is:
  • You can also clone repos using: hg clone[path]
This is an administrator guide for how to set up and maintain shared Mercurial repositories on Turing. You can put your shared repositories anywhere in /home/hg and they'll appear in the web interface. There are more instructions below under "Creating a Repository".

Authentication is required to access all repositories. You use the same username and password as your SSH account to Turing. There is also an anonymous login available:

Creating a Repository

1. Create the Mercurial repository (in this example, we create a repo called papers/testpaper):

hg init /home/hg/papers/testpaper

Alternative: You can also clone your local repository to the server (don't forget the double-slash in the URL)

# (on your local machine)
hg clone testpaper ssh://

2. Customize access to the repository. Do this by creating a configuration file as [repo path]/.hg/hgrc like this example:


description = Test Paper
contact = Jyh-Ming Lien (
style = masc
allow_archive = bz2 gz zip

# comment the following to allow the anonymous user push access
deny_push = anonymous@MASC.GMU.EDU

# comment the following line to allow the anonymous user read access
deny_read = anonymous@MASC.GMU.EDU

# the deny lines above take precedence over allow lines.
# these allow lines allow read and push access for everyone else
allow_read = *
allow_push = *

The description and contact fields will be what is displayed in the repository web interface. The style and allow_archive fields set up some basic options for displaying the repository and whether you are allowed to download tarballs from it.

The deny_push, deny_read, allow_push, and allow_read directives are how you specify access control. "deny" directives always take priority over "allow" directives, and for MASC usernames, these are specified as either a list of "username@MASC.GMU.EDU" entries or the special entry *, which represents everyone. The anonymous user is "anonymous@MASC.GMU.EDU".

For example, to allow only jmlien and jharri1 access to a repository, you could use the following lines:

allow_read = jmlien@MASC.GMU.EDU, jharri1@MASC.GMU.EDU
allow_push = jmlien@MASC.GMU.EDU, jharri1@MASC.GMU.EDU

More details on hgrc options are available at the Mercurial manual.

3. Set directory permissions to ensure hgadmin group access the new repo:

chgrp -R hgadmin /home/hg/papers/testpaper
chmod -R 775 /home/hg/papers/testpaper

The repository should be now available through:

4. (optional) You shouldn't have to, but if there are problems, restart apache server to ensure all settings are reloaded. You will need root if you have to do this.

sudo /etc/init.d/apache2 restart

List of Resource Pages in MASC
Computer Science @ George Mason University