This page (revision-9) was last changed on 22-Jun-2009 20:38 by ThomasBayen 

This page was created on 11-Jun-2008 16:01 by JensKapitza

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
8 22-Jun-2009 20:38 5 KB ThomasBayen to previous | to last MercurialVersionControl ==> MercurialVersionControlServer
9 22-Jun-2009 20:38 5 KB ThomasBayen to previous MercurialVersionControl ==> MercurialVersionControlServer
7 23-Feb-2009 22:55 5 KB JensKapitza to previous | to last need update to lenny
6 14-Dec-2008 11:59 5 KB Peter Hormanns to previous | to last
5 13-Dec-2008 18:36 5 KB JensKapitza to previous | to last nachtrag bug
4 13-Dec-2008 18:19 4 KB JensKapitza to previous | to last hg serve nutzen
3 13-Dec-2008 12:30 3 KB JensKapitza to previous | to last tags und links
2 13-Dec-2008 11:55 3 KB JensKapitza to previous | to last rewrite damit man ein wenig mehr versteht, 2ter anlauf.
1 11-Jun-2008 16:01 2 KB JensKapitza to last hg einstellen

Page References

Incoming links Outgoing links

Version management

Difference between version and

= MercurialVersionControl =
Für das nutzen der Web Oberfläche ist ein Web-Server mit CGI Unterstüzung notwendig.
kurz erwähnt sei hier Apache2 den man in Debian mit
{{{
apt-get install apache2 libapache2-mod-python
}}}
installieren kann.

Des weiteren brauch man die Pakete mercurial und python. Das installieren kann zum Beispiel so aussehen.
{{{
apt-get install mercurial python
}}}
Die einfachste Variante ein Mercurial Reposetorie über den Webserver erreichbar zu machen ist das Anlegen eines ~VirtualHost.VirtualHost.>> Hier ist zu sagen, wenn kein globales schreiben erwünscht ist sollten POST und PUT beim Webserver limitiert sein. Ein Beispiel für den Apache2 kann wie folgt aussehen. <<Einige informationen zur Konfiguration des Apache2 Webserver stehen auch auf [Apache2Module] >>

{{{
<VirtualHost *:80>
 ServerAdmin webmaster@back2heaven.de
 ServerName hg.back2heaven.de
 DocumentRoot /mnt/mercurial
 # index.cgi ist das webdir.cgi aus /usr/share/doc/mercurial/examples/
 ScriptAliasMatch        ^/hg/(.*)        /mnt/mercurial/cgi-bin/index.cgi/$1
 <Directory /mnt/mercurial/>
  Options +ExecCGI
  Order allow,deny
  Allow from all
  #cgi modul muss ann sein
  AddHandler cgi-script .cgi
  #für den schreibzugriff
  AuthUserFile /etc/apache2/htpasswd
  AuthName "hgdev"
  AuthType Basic
  <Limit POST PUT>
   Require valid-user
  </Limit>
 </Directory>

 ErrorLog /var/log/apache2/error_hg.log
 LogLevel warn
 CustomLog /var/log/apache2/access_hg.log combined
</VirtualHost>
}}}
Das hgwebdir.cgi brauch eine Konfigurationsdatei in dem die Speicherorte der Reposetories stehen. Hier ist wichtig zu sagen, dass im <<~VirtualHostVirtualHost>> ein /hg/ verwendet wurde um die daten zum script zu schicken. Da sonst ein Reposetorie eventuell nicht erreichbar ist. (evtl. BUG)

{{{
#hgweb.config
# unter /mnt/mercurial/data sind alle unsere reposetories
[collections]
/mnt/mercurial/ = /mnt/mercurial/data
#eine leerzeile muss bei mir drin sein
}}}
Das hgwebdir.cgi sieht dann nach löschen einiger Dinge etwa so aus.
{{{
#!/usr/bin/env python
#hgwebdir

#debug
import cgitb, sys
cgitb.enable()

from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
import mercurial.hgweb.wsgicgi as wsgicgi

def make_web_app():
   return hgwebdir("hgweb.config")

wsgicgi.launch(wsgiapplication(make_web_app))
}}}

Damit ist alles eingerichtet. Nun fehlen uns noch die Repositoris in data/ die werden einfach angelegt.
{{{
$> cd /mnt/mercurial
$> mkdir -p data/rep1 data/rep2
$> cd data/rep1
$> hg init .
$> cd ../rep2
$> hg init .
}}}

Damit später auch geschrieben werden kann, einfach eine htpasswd anlegen.
{{{
$> htpasswd -c /etc/apache2/htpasswd
}}}

Wer will kann mercurial noch ein wenig Konfigurieren.
{{{
#/etc/mercurial/hgrc
[web]
allow_archive = bz2 gz zip
allowpull = true
contact =developer@schwarze-allianz.de
maxchanges = 15
maxfiles = 15
style = gitweb
# wenn man kein ssl nutzen will
push_ssl = false
# brauch man
allow_push = *
}}}

Nun sollte alles erreichbar sein. Ähnlich wie <<~ViewCVSViewCVS kann man nun auch über die Web-Oberfläche alles sehen. Der Befehl
{{{
$> hg clone http://hg.back2heaven.de/hg/rep1
}}}
lädt das rep1 herunter damit man lokal damit arbeiten kann. später kann man mit
{{{
$> hg push
}}}
wieder alles zum Server senden.

Ein Vorteil gegenüber nutzung von CVS oder auch SVN ist, dass es auch möglich ist in ohne Netzanbindung mit dem Reposetorie zu arbeiten. Da ein
{{{
$> hg commit
}}}
keine Netzwerkanbindung brauch.

<<[{Tag Linux VersionsVerwaltung Apache}]