Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

development:mercurial

Mercurial

Ganz herzlichen Dank an Detlef Kreuz, der diesen Artikel als „Gastbeitrag“ für unser Wiki verfasst hat!

Ein Versionskontrollsystem erlaubt es dir, zentral alle Entwicklungstätigkeiten zu koordinieren, Änderungen nachzuverfolgen und diese ggf. auch wieder rückgängig zu machen. Moderne Systeme erlauben darüber hinaus ein vergleichbar lose gekoppeltes Arbeiten. Mercurial ist eines davon. Es arbeitet sogar gut mit Trac zusammen.

Um es zu nutzen, musst du dich per SSH auf deinem Uberspace einloggen und für dein Projekt ein Repository anlegen. Das geht ganz einfach, zu installieren ist nichts. Im Beispiel organisieren wir die Mercurial-Projekte im Unterverzeichnis hg (wer sich fragt, was es mit hg auf sich hat: Es ist das Elementsymbol vom Quecksilber - was im Englischen „Mercury“ heißt). So geht's:

[petra@neon ~]$ mkdir ~/hg
[petra@neon ~]$ hg init ~/hg/projekt

Damit legst du im Unterverzeichnis ~/hg dein Projekt-Pepository mit Namen projekt an. Fertig. Übrigens, eine nette Einführung zu Mercurial gibt es unter http://hginit.com/; Tipps sind unter http://hgtip.com/ zu finden.

Mercurial nützt dir bereits etwas, wenn du einfach nur die Entwicklung eines Projekts tracken möchtest; seine Stärken spielt es aber gerade auch im Remote-Zugriff auf ein Repository aus. Auf deinem eigenen Rechner solltest du dir daher ebenfalls Mercurial installieren. Auf das Repository in deinem Uberspace greifst du über die Adresse ssh://petra@neon.uberspace.de/hg/projekt zu. Also zum Beispiel:

[ich@localhost]$ hg clone ssh://petra@neon.uberspace.de/hg/projekt

Lesezugriff einrichten

Alleine arbeiten macht aber weniger Spaß. Vielleicht möchtest du anderen den Zugang zu deinem Repository gewähren. Um sicher zu gehen, erst einmal nur mit Leseberechtigung.

Mercurial bietet die Möglichkeit, auf ein Repository über den Webserver zuzugreifen. Das wollen wir jetzt einrichten. Dazu musst du erst einmal mit easy_install das Python-Modul für Mercurial installieren; wir machen das hier mal mit Python 2.7:

[petra@neon ~]$ mkdir -p ~/lib/python2.7
[petra@neon ~]$ easy_install-2.7 Mercurial

Dann richtest du unter deiner DocumentRoot ein Verzeichnis ein, über das der Zugriff erfolgen soll, z.B. hg. In dieses Verzeichnis musst du drei Dateien anlegen: - hgweb.cgi: das CGI-Skript (CGI reicht locker aus, es muss kein FCGI sein) - hgweb.config: die Konfigurationsdatei - .htaccess: für hübsche URL's

Also, los gehts:

[petra@neon ~]$ mkdir ~/html/hg

[petra@neon ~]$ cat <<__EOF__ > ~/html/hg/hgweb.cgi
#!/usr/bin/env python2.7
config = "/home/petra/html/hg/hgweb.config"
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
__EOF__

[petra@neon ~]$ chmod 755 ~/html/hg/hgweb.cgi

[petra@neon ~]$ cat <<__EOF__ > ~/html/hg/hgweb.config
[paths]
projekt = /home/petra/hg/projekt
[web]
baseurl = /hg
__EOF__

[petra@neon ~]$ cat <<'__EOF__' > ~/html/hg/.htaccess
Options +ExecCGI
AddHandler cgi-script .cgi
RewriteEngine On
RewriteBase /hg
RewriteRule ^$ hgweb.cgi [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) hgweb.cgi/$1 [QSA,L]
__EOF__

Bitte stell sicher, dass keine Schreibrechte für die Unix-Gruppe eingerichtet sind, sonst verhindert suEXEC die Ausführung der Scripts:

[petra@neon ~]$ chmod -R g-w ~/html/hg

Jetzt ist unter https://petra.neon.uberspace.de/hg/projekt dein Projekt-Repository lesend zugreifbar. Statt wie oben mit Hilfe von SSH kann nun jeder lesend auf das Repository zugreifen, z.B. so:

[ich@localhost]$ hg clone https://petra.neon.uberspace.de/hg/projekt

(Per unverschlüsseltem HTTP geht es natürlich auch, aber wer möchte das schon. Für einen Schreibzugriff erzwingt Mercurial ohnehin HTTPS.)

Schreibzugriff einrichten

Zunächst musst du einen Verzeichnisschutz, z.B. via .htaccess einrichten. Alle Benutzer, die Änderungen in das Repository einstellen sollen, musst du in der Datei ~/hg/projekt/.hg/hgrc verwalten. Es ist sowieso eine gute Idee, diese Datei anzulegen, denn dort kannst du auch eine kleine Projektbeschreibung hinterlegen.

[petra@neon ~]$ cat <<__EOF__ > ~/hg/projekt/.hg/hgrc
[web]
description = Mein erstes Projekt
allow_push = petra anton caesar emil
__EOF__

Du kannst auch allow_push = * angeben. Dann dürfen alle Benutzer mit Zugriff auf das Repository dort Änderungen hinzufügen.

In der Manualseiten zu hg und hgrc findest du weitere Informationen, wie du dein Repository an deine speziellen Bedürfnisse anpassen kannst

[petra@neon ~]$ man 1 hg
[petra@neon ~]$ man 5 hgrc
development/mercurial.txt · Zuletzt geändert: 2014/04/17 14:47 (Externe Bearbeitung)