This is considered a feature of last resort.
Mercurial has limited support for serving from web servers with no CGI support.
To use, simply copy your project's repository files to a project directory on your server:
$ cd public_html $ mkdir my-project $ cp -a ../my-repo/.hg my-project
Alternately use a symlink. Copying can be accomplished via rsync, ftp, scp, etc., so long as all the files beneath .hg are copied.
Then you should be able to pull from this repo like so:
$ hg clone http://example.com/my-project
Mercurial will automatically (since version 1.1) detect that it should use the static HTTP protocol. If you are stuck with an older version, then use static-http://example.com/my-project as the clone URL.
This is not recommended for most projects because it can result in a very large number of requests. Note that the web server must support HTTP range requests.
If at all possible, you should use a CGI-based server instead.