![]() |
|
MercurialIn diesem Beitrag möchte ich Mercurial kurz vorstellen. Mercurial ist ein verteiltes Versionskontrollsystem. VorteileVerteilte Versionskontrollsysteme benötigen keinen Server. Es gibt kein zentrales Repository, sondern beliebig viele, die ihre Änderungen untereinander bekannt machen (können). Nachdem ich sehr lange dem robusten CVS treu blieb, habe ich mich gegen einen Wechsel zu Subversion entschieden und den Schwung zu Mercurial gewagt. Soviel vorweg: Bereut habe ich es bisher nicht. Mercurial und GITNeben Mercurial gibt es auch GIT als verteiltes Sourcecode-Management-System (SCM). GIT wird z.B. bei der Entwicklung des Linux-Kernels eingesetzt. Aber auch Mercurial kann große Projekte wie OpenOffice vorweisen. Mercurial ist komplett in Python geschrieben, GIT in C. Los gehtsErstmal erstellen wir uns ein leeres Repository hg init Ein bestehendes Repository kann man z.B. mit hg clone static-http://scm.openrat.de/latest kopieren. Ach ja, mit der Eingabe von hg help <befehl> bekommt man eine Kurzhilfe zu jedem Befehl angezeigt. Nun kann man fleißig Änderungen vornehmen: Datei anlegen, ändern, löschen. Mit hg commit checkt man das ganze ein. Dabei wird keine Änderungen durch die Weltgeschichte transportiert, alles bleibt im lokalen Repository, welches übrigens im versteckten Unterordner „.hg“ schlummert. dankert@duese:~/tmp/bla$ hg init Jetzt wird es verteiltBisher war für CVS- und SVN-Anwender alles wie gewohnt, doch jetzt kommt der Clou: Wir klonen das Repository auf ein Notebook. Dazu starten wir in diesem Fall den eingebauten Webserver: hg serve Nun ist auf Port 8000 das Repository erreichbar. Im Browser gebt Ihr dazu einfach locahost:8000 ein. Auf dem Notebook holen wir uns jetzt das Repository mit hg clone .= dankert@braunbaer-laptop:~/tmp/bla$ hg clone http://172.19.12.23:8000 . Jetzt können wir das Notebook abstöpseln und unterwegs ohne Netzzugang Datei ändern, löschen und per hg commit ins Repository aufnehmen. dankert@braunbaer-laptop:~/tmp/bla$ echo "Noch eine Zeile" >> datei.txt Der MergeWenn wir wieder zuhause sind, möchten wir die Änderungen bestimmt im eingangs erstellten Haupt-Repository bekannt machen. Dazu schauen wir mit hg pull erstmal nach, ob es etwas neues gibt. Anschließend schieben wir die Änderungen mit hg push weiter. Dazu muss auf dem Ziel-PC natürlich wieder der Server mit hg serve gestartet sein. dankert@braunbaer-laptop:~/tmp/bla$ hg pull Uuups. Per Voreinstellung verlangt Mercurial nach SSL - was wir mangels Zertikat (erstmal) nicht haben und im LAN wahrscheinlich auch nicht brauchen. Im Unterverzeichnis „.hg“ gibt es die Datei „hgrc“. Hier tragen wir die Zeilen [web] ein. Nach einer Änderung muss der Server neu gestartet werden! Die Zeile „allow_push=*“ erlaubt das Schreiben ins Repository. Anderenfalls würde man die Meldung „authorization failed“ erhalten. Anschließend starten wir nochmal den hg push auf dem Notebook. dankert@braunbaer-laptop:~/tmp/bla$ hg push Super, das hat geklappt. Jetzt können wir im Haupt-Repository ein Update machen. dankert@duese:~/tmp/bla$ hg up Fertig. FallstrickeKomplizierter wird es, wenn man in mehreren Repositorys Änderungen durchführt. Beim ersten Pull bzw. Push enstehen auf der Zielseite 2 sog. Köpfe, die mit hg head sichtbar sind. Nun muss man mit einem hg merge diese Änderungen zusammenführen und anschließend per hg commit bestätigen. Der Merge muss zwar nur auf einer Seite durchgeführt werden, aber bei größeren Änderungen kann das komplexer werden. Vor einem Pull oder Push sollte man darauf achten, dass das Arbeitsverzeichnis sauber ist und keine abgehenden Änderungen enthält. HilfsmittelMercurial wird von zahreichen IDEs unterstützt, z.B. gibt es für Eclipse das Plugin „MercurialEclipse“. FazitMercurial ist ein klasse Hilfsmittel für den Entwickler, wenn man nicht mit einem zentralen Repository arbeiten kann oder will. Es ist robust, gut dokumentiert und bringt nach etwas Einarbeitungsaufwand viel Freude. Ich wünsche viel Spaß mit Mercurial... 27.10.2009, 21:44 |
Was geht: Bier IT-News Projekte: Content-Management |