Differences between revisions 1 and 82 (spanning 81 versions)
Revision 1 as of 2006-06-18 14:03:10
Size: 3757
Editor: MishaS
Comment: one more page about hgwebdir.cgi
Revision 82 as of 2013-08-30 16:00:32
Size: 375
Editor: Andre1578
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[TableOfContents]]
= Publishing Repositories with `hgwebdir.cgi` =

== Introduction ==

Well, we have a certain setup with subversion. I'd like to reproduce it using Mercurial.

== Pre-requisites ==

I run all this on an Ubuntu system. Edgy one. :)

The installed software is:
 * apache2 (apache2, apache2-common, apache2-mpm-prefork, apache2-utils)
 * some version of mercurial (mine was 0.9 taken from Debian/unstable)
 * python:
   * Ubuntu/Edgy comes with python 2.4
   * you will need python2.4-dev package as well
 * sudo (in general, I prefer sudo to su)

== Getting proper Mercurial ==

The whole point was to try pull/push over http. So the following was done (I'm
a real newbie for hg, so please bear me :)):
{{{
$ cd working-directory
$ hg clone http://selenic.com/hg/
$ cd hg
$ hg pull http://hg.intevation.org/mercurial/crew
$ wget http://www.selenic.com/pipermail/mercurial/attachments/20060615/2893c03e/push-http.bin -O push-http.patch
$ hg import -p1 push-http.patch
$ python setup.py build
$ sudo python setup.py install
}}}

== Directory Structure ==

Create the necessary directories:
{{{
$ sudo mkdir -p /var/hg/repos
$ sudo chown www-data:www-data -R /var/hg
}}}

It's usually a good idea to keep special directories out of the tree served by apache.

== Putting the right stuff in place ==

Put the script in place (remember, we are still in that `working-directory/hg` :)):
{{{
$ sudo -u www-data cp hgwebdir.cgi /var/hg
$ sudo -u www-data chmod +x /var/hg/hgwebdir.cgi
}}}

Prepare the config:
{{{
$ cat > /tmp/hgweb.config
[collections]
repos/ = repos/
^D
$ sudo -u www-data cp /tmp/hgweb.config /var/hg
$ rm /tmp/hgweb.config
}}}

== Making it accessible ==

Ok, now it's time for apache.

First of all, do not really change the config of apache directly:
{{{
$ sudo mkdir /etc/apache2/hg
}}}

Create the config with the following contents (e.g by using `sudo vim /etc/apache2/hg/main.conf`):
{{{
ScriptAliasMatch ^/hg(.*) /var/hg/hgwebdir.cgi$1

<Directory /var/hg>
  Options ExecCGI FollowSymLinks

  AllowOverride None
</Directory>
}}}

This config says that we are going to serve our repositories through '<yourhost>/hg/'.

Now make it really available, by changing your favourite site in `/etc/apache2/sites-enabled`.
For this experiment I used `/etc/apache2/sites-enabled/default`:
{{{
  ...
  Include /etc/apache2/hg/main.conf
</VirtualHost>
}}}

Make sure that everything is OK:
{{{
$ sudo apache2ctl configtest
Syntax is OK
}}}

Restart your web server:
{{{
$ sudo apache2ctl stop
$ sudo apache2ctl start
}}}

Check if it works by directing your browser to `<yourhost>/hg/`

== You are done ==

Hooray!

== Final Bits ==

=== Create a new repository ===

{{{
$ sudo -u www-data hg init /var/hg/repos/<repository-name>
}}}

=== Provide more information about it ===

Add the following to the `/var/hg/repos/<repository-name>/.hg/hgrc` file:
{{{
[web]
contact = Bilbo Baggins # Whom to contact, plain text, no fancy stuff
description = My precious! # Nice description what this is about, you can
                              # include HTML (like <a>)
}}}

=== Customize the look ===

Add the following to the `/var/hg/repos/<repository-name>/.hg/hgrc` file:
{{{
[web]
style = gitweb # looks cleaner from my point of view :)
allow_archive = gz, zip, bz2 # If you think people should be able to download
                              # snapshots as .tar.gz, .zip, .tar.bz2 respectively
}}}

== Disclaimer ==

Well, it works (worked) for me. Please do not hesitate to update this page to
include small bits I've forgotten or just plainly am not aware of.
Elbert is his name but individuals generally misspell it. North Dakota has usually been his dwelling. Business office supervising is his profession and he is executing really very good economically. What his relatives and him like is canoeing and now he is trying to gain funds with it. Examine out his internet site listed here: http://www.getskytv.co.uk/sky-multiroom.php

Elbert is his name but individuals generally misspell it. North Dakota has usually been his dwelling. Business office supervising is his profession and he is executing really very good economically. What his relatives and him like is canoeing and now he is trying to gain funds with it. Examine out his internet site listed here: http://www.getskytv.co.uk/sky-multiroom.php

HgWebDirStepByStep (last edited 2018-11-26 18:38:58 by JordiGH)