Configuring Mercurial for Microsoft IIS
Accessing Mercurial Repositories via Microsoft IIS has a couple of advantages:
- IIS is shipped with most Windows distributions so it doesn't require extra installation
- no setup is required for an extra port for external access
- no SSH key setup is required.
This page describes how to setup Microsoft IIS to serve Mercurial repositories.
This guide was created for Windows Server 2003. However, the steps are very similar for other windows releases.
codeBeamer must be installed and started before this configuration can be used.
IIS doesn't support file based authentication (like .htpasswd
for apache) so the authentication must be done through LDAP
Installing Mercurial and Python
Please choose the 32 bit version of all software mentioned below even if you are running 64 bits Windows
If IIS is not enabled go to Control Panel, select Add/Remove Programs, click on Add/Remove Windows Components and check Application Server.
You must login to see this link. Register now, if you have no user account yet.
Download and install Python 2.6.6 using this URL:
http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
Use C:\Python26
as installation directory.
Download the Mercurial runtime from the location below. Note that this will not install a complete Mercurial client.
http://mercurial.selenic.com/release/windows/mercurial-1.7.1.win32-py2.6.exe
Install the runtime to the same directory where Python was installed (
C:\Python26
).
Download and install PyWin (also to
C:\Python26
: PyWin).
Download and install the ISAPI wsgi handler:
http://isapi-wsgi.googlecode.com/files/isapi_wsgi-0.4.2.win32.exe
Clone the Mercurial repository to a temporary location. You can use the mercurial executable shipped with mercurial:
CBHOME\libexec\hg\hg.exe clone http://selenic.com/repo/hg
(in the command change CBHOME
to the installation directory of codebeamer).
Navigate to the directory, where you cloned the Mercurial repo to. Copy
hg\contrib\win32\hgwebdir_wsgi.py
to CBHOME\repository
.
Now edit this line starting wiht hgweb_config
in hgwebdir_wsgi.py
and change the path like this:
hgweb_config = r'CBHOME\repository\scmweb\hgweb_apache.config'
From command line, navigate to
CBHOME\repository
and execute the following command:
C:\Python26\python.exe hgwebdir_wsgi.py
This will generate
_hgwebdir_wsgi.dll
that IIS will use.
Configuring IIS for Mercurial
Start IIS manager: Start > Administrative Tools > Internet Information Services (IIS) Manager
First you have to create a new Application Pool called Mercurial. To achieve this right click on Application pools and select Add new application pool. In the popup type Mercurial as name and click ok.
You must login to see this link. Register now, if you have no user account yet.
Then create a new web site:
- in the left tree right click on Web Sites and from the popup menu choose New > Web Site:
You must login to see this link. Register now, if you have no user account yet.
- follow the steps of the wizard
You must login to see this link. Register now, if you have no user account yet.
You must login to see this link. Register now, if you have no user account yet.
You must login to see this link. Register now, if you have no user account yet.
(at this point make sure that you choose a port that is not in use)
You must login to see this link. Register now, if you have no user account yet.
You must login to see this link. Register now, if you have no user account yet.
Now the web site is created. Right click on it ad choose Properies. Click the Home Directory tab and set the Application Pool to Mercurial:
You must login to see this link. Register now, if you have no user account yet.
Switch to the Directory Security tab, click on Edit in the Authentication and access control. DIsbale anonymus access and enable basic authentication. This makes you able to access repositories using users configured on the server.
Now you have to create a new handler mapping:
You must login to see this link. Register now, if you have no user account yet.
The last (and most important) step is adding a new web service extension.
- right click on Web Service Extensions in the left tree and click Add a new Web Service Extentsion.
- type Mercurial WSGI shim as name and click on Add
- on the next window browse the previously created
_hgwebdir_wsgi.dll
and make sure to check the Set extension status to allowed checkbox
You must login to see this link. Register now, if you have no user account yet.
Finally restart IIS. Now you can browse your mercurial repositories using this url:
http://localhost:PORT/hg
Where PORT
is the port number you specified when creating the Mercurial webpage.