Die folgende Anleitung basiert unter anderem auf folgende Artikel:
http://malor.se/blog/?p=60http://wiki.ubuntuusers.de/Mercurial_Repository_aufsetzenhttp://stackoverflow.com/questions/2671279/hgwebdir-push-permission-denied-error
Voraussetzung:
Eine frische Ubuntu 10.10 Installation in eine VirtualBox. (Da Tomcat später noch benötigt wird, habe ich bei der Installation Tomcat direkt installieren lassen).
Die Ubuntu-Version kann wie folgt überprüft werden:
$ cat /etc/issueUbuntu 10.10 \n \l
Mecurial und Apache installieren
$ sudo apt-get install apache2$ sudo apt-get install mercurial
Mercurial Repository vorbereiten
$ sudo mkdir /srv/hg$ sudo mkdir /srv/hg/cgi-bin
Statt hgwebdir.cgi nutze ich hgweb.cgi (da hgwebdir.cgi nicht mit installiert wurde).
$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi /srv/hg/cgi-bin/$ sudo chmod a+x /srv/hg/cgi-bin/hgweb.cgi
Folgende Zeile in der hgweb.cgi muss angepasst werden:
$ sudo nano /srv/hg/cgi-bin/hgweb.cgi
# Path to repo or hgweb config to serve (see 'hg help hgweb')config = "/srv/hg/cgi-bin/hgweb.config"
Dateien anlegen mit dem jeweiligem Inhalt:
$ sudo nano /srv/hg/cgi-bin/hgweb.config[collections]/srv/hg/ = /srv/hg/$ sudo nano /srv/hg/hgrc-template[web]allow_push = *push_ssl = false
Das hgrc-template wird in jedem neuen Projekt kopiert und erlaubt das pushen von allen registreirten Benutzern (mehr zu den Benutzern weiter unten).
Skript erstellen, zu einfachen Erzeugung neuer Mercurial Projekte:
$ sudo touch /srv/hg/create-new-project.sh$ sudo chmod +x /srv/hg/create-new-project.sh$ sudo nano /srv/hg/create-new-project.sh
#!/bin/bash
usage(){ echo "You gave me no Projectname. Use me like this: $0 new_project_name"; exit 1; }
[ "$(whoami)" != "root" ] && { echo "Sorry, you are not root."; usage; }
[ $# -eq 0 ] && { usage; }
PROJECT_NAME=$1
DIR_NAME=`dirname "$0"`
echo "Creating new Mercurial Project in $DIR_NAME/$PROJECT_NAME"
sudo mkdir $DIR_NAME/$PROJECT_NAME
cd $DIR_NAME/$PROJECT_NAME
hg init
sudo cp ../hgrc-template .hg/hgrc
sudo chmod -R 777 .hg
echo Done.
Ein neues Projekt kann nun angelegt werden mit:
$ sudo /srv/hg/create-new-project.sh test-projekt
Apache configurieren
Datei anlegen:
$ sudo nano /etc/apache2/sites-available/hgNameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /srv/hg/cgi-bin/ ScriptAliasMatch ^/hg(.*) /srv/hg/cgi-bin/hgweb.cgi$1 <Directory "/srv/hg/cgi-bin/"> SetHandler cgi-script AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all AuthUserFile /etc/hg/htpasswd AuthName "Dev Repo" AuthType Basic <Limit GET POST PUT> Require valid-user </Limit> </Directory> ErrorLog /var/log/apache2/hg.log </VirtualHost>
Nun wird die standard Apache Seite dektiviert und die neue Mercurial Seite aktiviert:
$ sudo a2dissite default$ sudo a2ensite hg$ sudo /etc/init.d/apache2 reload
Um einen neuen Benutzer anzulegen wird folgendes ausgeführt:
$ sudo mkdir /etc/hg/
$ sudo htpasswd -c /etc/hg/htpasswd cheneym
Weitere Benutzer werden ohne "-c" angelegt.
Voalá! Fertig ist das Mondgesicht.
Web-Oberfläche, pullen und pushen:
$ http://deine-url/hg/$ hg clone http://deine-url/hg/
Keine Kommentare:
Kommentar veröffentlichen