MercurialVersionControl

Benötigt wird ein Web Server, Mercurial, Python

Apache2 + mod_python + mod_cgi + mod_auth

VirtualHost anlegen (post,put sperren) 

{{{
 <VirtualHost *>
  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
  ScriptAliasMatch        ^/cgi-bin(.*)  /mnt/mercurial/cgi-bin/index.cgi$1
  ScriptAlias /cgi/ /mnt/mercurial/cgi-bin/
  <Directory /mnt/mercurial/cgi-bin/>
   DirectoryIndex index.cgi
   AllowOverride None
   Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
   Order allow,deny
   Allow from all
   AddHandler cgi-script .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>
}}}

{{{
#hgweb.config
 [collections]
 /mnt/mercurial/ = /mnt/mercurial/
 #eine leerzeile muss bei mir drin sein
}}}

{{{
#!/usr/bin/env python
#hgwebdir

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))

}}}


nun kann man unter /mnt/mercurial
alle repositorys hochladen!

todo
:htpasswd -c /etc/apache2/htpassed  anlegen
:hg init /mnt/mercurial mein test_hg

#/etc/mercurial/hgrc
hochladen von daten via http
{{{
[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 = *
}}}

todo
:dann kann man das lokale repository hochladen

lade das rep. runter
hg clone http://hg.back2heaven.de/hg/test

dannach kann man es bearbeiten und mit hg push wieder zum server schicken