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
Benötigt
>> <<daswird>> <<nutzenein>> <<der >>Web <<OberflächeServer,>> <<istMercurial,>> <<ein Web-Server mit CGI Unterstüzung notwendig.Python>>
<<kurz erwähnt sei hier
>>Apache2 <<den+>> <<manmod_python>> <<in+>> <<Debianmod_cgi>> <<mit
{{{
apt-get
+
>> <<install apache2 libapache2-mod-pythonmod_auth>>
<<}}}>>
<<installierenVirtualHost>> <<kann.

Des
anlegen
>> <<weiteren(post,put>> <<brauchsperren)>> <<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. 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.  

>>{{{
<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/(.*)^/hg(.*)>>        <</mnt/mercurial/cgi-bin/index.cgi/$1/mnt/mercurial/cgi-bin/index.cgi$1>>
 <<<DirectoryScriptAliasMatch>> <</mnt/mercurial/>
 
>>   <<Options >> <<+ExecCGI ^/cgi-bin(.*)  /mnt/mercurial/cgi-bin/index.cgi$1>>
 <<ScriptAlias>> <<Order/cgi/>> <<allow,deny/mnt/mercurial/cgi-bin/>>
 <<<Directory>> <<Allow/mnt/mercurial/cgi-bin/>
>> <<from >> <<allDirectoryIndex index.cgi>>
  <<#cgiAllowOverride>> <<modulNone
>> <<muss >> <<annOptions>> <<sein+ExecCGI -MultiViews +SymLinksIfOwnerMatch>>
  <<AddHandlerOrder>> <<cgi-scriptallow,deny
>> <<.cgi  Allow from all>>
  <<#fürAddHandler>> <<dencgi-script>> <<schreibzugriff.cgi>>
  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
<< ServerSignature on
>></VirtualHost>
}}}
<<Das hgwebdir.cgi brauch eine Konfigurationsdatei in dem die Speicherorte der Reposetories stehen. Hier ist wichtig zu sagen, dass im VirtualHost 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/mnt/mercurial/>>
#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
nun
>> <<istkann>> <<allesman>> <<eingerichtet.unter>> <<Nun fehlen uns noch die Repositoris in data/ die werden einfach angelegt.
{{{
$> cd
>>/mnt/mercurial
<<$>alle>> <<mkdirrepositorys>> <<-p data/rep1 data/rep2hochladen!>>
<<$> cd data/rep1>>
<<$>todo
:htpasswd
>> <<hg-c>> <<init/etc/apache2/htpassed>> <<. anlegen>>
<<$>:hg>> <<cd ../rep2
$> hg
>>init <<.
}}}

Damit
/mnt/mercurial
>> <<spätermein>> <<auch geschrieben werden kann, einfach eine htpasswd anlegen.test_hg>>
<<{{{>>
<<$> htpasswd -c /etc/apache2/htpasswd#/etc/mercurial/hgrc>>
<<}}}

Wer
hochladen
>> <<willvon>> <<kanndaten>> <<mercurialvia>> <<noch ein wenig Konfigurieren. http>>
{{{
<<#/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 = *
}}}

<<Nuntodo
:dann
>> <<sollte alles erreichbar sein. Ähnlich wie ViewCVS >>kann man <<nundas>> <<auchlokale>> <<überrepository>> <<diehochladen

lade
>> <<Web-Oberflächedas>> <<allesrep.>> <<sehen. Der Befehlrunter>>
<<{{{
$>
>>hg clone <<http://hg.back2heaven.de/hg/rep1http://hg.back2heaven.de/hg/test>>
<<}}}>>
<<lädtdannach>> <<daskann>> <<rep1 herunter damit >>man <<lokales>> <<damitbearbeiten>> <<arbeitenund>> <<kann. später kann man >>mit <<
{{{
$>
>>hg push<<
}}}
>>wieder <<alles >>zum <<Serverserver>> <<senden.schicken
<<
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.