How do I set up Mercurial and hgweb on IIS?

I just had to install a fresh Mercurial instance yesterday, here’s updated instructions for 1.7:

  1. Install Mercurial (these instructions were tested with 1.7)
  2. Install Python (for Mercurial 1.7, you must use the x86 version of Python 2.6.6)
  3. You will need to download the hgweb.cgi file from the Mercurial source. You can download the source by running: hg clone https://www.mercurial-scm.org/repo/hg/
  4. Create a folder that will be your web application folder. You will need to copy three things into this folder:

    • The hgweb.cgi file
    • The contents of the Library.zip from your “C:\Program Files\Mercurial” folder
    • The Templates folder from your “C:\Program Files\Mercurial”
  5. You will need to make sure you have Python set up in IIS.

    • Enable CGI via the following: Control Panel -> Turn Windows Features On or Off -> Roles -> Web Server (IIS) -> Add Role Services -> Check CGI
    • Create a new Web Site in IIS and make sure the physical path is the folder you created above
    • In the Handler Mappings for the new website, select “Add Script Map”. Enter *.cgi for the request path, c:\Python26\python.exe -u “%s” for the Executable, and Python for the Name.
  6. You will also need to create a file named “hgweb.config” with contents similar to below. The path within the file needs to be the location on your drive where you want to store the Mercurial repositories:

    [collections]
    c:\Mercurial\repos = c:\Mercurial\repos

  7. Edit the hgweb.cgi file and change the line where it sets the path to your hgweb.config to something like the following (wherever the hgweb.config file is):

    config = “C:\Mercurial\hgweb.config”

  8. Now, open a browser and navigate to http://localhost/mercurial/hgweb.cgi (or whatever is the appropriate URL path you set up in IIS) and you should see the Mercurial Repositories page.

Also, check out Jeremy Skinners blog post . It’s a little outdated, but has some extra nice steps like setting up URL re-writing for cleaner URL’s.

Leave a Comment