Versionsverwaltung mit Mercurial

Ich bin schon länger auf der Suche nach einem guten Programm zur Versionsverwaltung. Früher hatte ich mich eigentlich nie großartig mit dem Thema auseinander gesetzt. Aber in letzter Zeit kam es häufiger mal vor, dass ich unter verschiedenen Systemen gearbeitet bzw. programmiert habe. Mal auf meinem Notebook unter Ubuntu. Dann saß ich an meinem Büro-Rechner (Windows). Oder an meinem Notebook mit Windows. Warum ich so oft wechsel? Ganz einfach: Ich nutze diese Geräte nicht alleine, sondern teile sie mit meiner Freundin, d.h. wenn sie z.b. mit dem Notebook vorm Fernseher sitzt, bleibt mir nur der Büro-Rechner. Oder zur Zeit muss sie für eine Uni-Prüfung lernen und nutzt zum Lernen unser Büro und den Rechner da vor Ort. Somit muss ich jetzt mit meinem Notebook arbeiten.
Stört mich weiter nicht. Es ist nur immer wieder blöd, wenn ich einen Systemwechsel vollziehe, muss ich auf der „neuen“ Maschine erstmal meinen aktuellen Stand wiederherstellen. Das habe ich bisher immer mit einem USB-Stick gelöst. Also z.B. Eclipse-Projekt-Ordner vom alten System auf Stick kopiert und dann auf dem neuen System wieder reinkopiert.
Eine Zeit lang habe ich auch direkt auf den Stick programmiert. Also dort ein workspace-Ordner eingerichtet und fleißig darauf programmiert.  Dabei hatte ich aber immer ein ungutes Gefühl, denn so ein Stick kann schon mal ganz schnell kaputt oder genauso schlimm: verloren gehen. Und dann wäre meine ganze Arbeit weg! Nicht so toll!

Also musste schnell eine elegantere Lösung her. Ich hatte schon vorher gehört, dass es sowas gibt wie SVN, was vermutlich die meisten Programmierer einsetzen. Aber ich hatte damit noch nie zuvor gearbeitet. Somit musste ich mich erstmal informieren.

Wenn man mal SVN oder Subversion bei Google eintippt, findet man zig Millionen-Treffer. Dabei sind auch viele Anleitungen dabei, wie man sowas einrichtet oder wie man nachher mit seiner Eclipse-Instanz darauf zugreifen kann.

Nachdem ich mich ein wenig in SVN eingelesen hatte, habe ich aber auch schnell entdeckt, dass dieses System für mich nicht in Frage kommt, denn es hat für mich einen kleinen Nachteil. Ich müsste dafür extra eine Maschine aufsetzen. Also ein Linux-System, auf dem dieser Dienst läuft! Und da liegt das Problem. Ich habe kein Gerät, dass ich dafür nutzen könnte. Bzw. ich hätte wohl eins, aber das dann 24 Stunden am Tag laufen zu lassen, wäre mir einfach zu teuer! Also musste eine andere Lösung her.

Auf der Wikipedia-Seite zur Versionsverwaltung bin ich dann auf das Prinzip der verteilten Versionsverwaltung aufmerksam geworden.
Bei dem eben genannten SVN handelt es sich um eine zentrale Versionsverwaltung, das bedeutet es gibt ein sog. zentrales Repository (da wo der SVN-Dienst läuft) innerhalb eines Netzwerkes, wo die Teilnehmer des Netzwerkes ihre Versionen hochladen können. Quasi eine große Sammelstelle! 🙂
Bei der verteilten Versionsverwaltung läuft das ein wenig anders. Dort gibt es keine zentrale Sammelstelle. Sondern jeder Teilnehmer hat sein eigenes Repository, in dem er fleißig „versionieren“ kann. Darüber hinaus gibt es aber noch die Möglichkeit, dass ein Teilnehmer sein Repository mit dem Repository eines anderen Teilnehmers abgleichen kann. Man kann sich quasi mit anderen Teilnehmern synchronisieren. Und das läuft alles ohne Server! Ideal für mich. Ich muss also keine extra Maschine aufsetzen.

Nach dem ich mich für dieses Prinzip entschieden habe, musste ich nur noch ein Programm finden, was das alles kann. Und da bin ich dann auf Mercurial gestoßen.
Cooles Tool! Und auch schnell installiert. Auf der Entwickler-Seite findet man die Installationsdateien für Windows, Linux und MacOS. Es ist eigentlich ein Kommandozeilen-Tool. Aber für Windows gibts ne schöne GUI, die bei der Installationsdatei mit geliefert wird.

Und das Beste, es gibt sogar ein brauchbares Eclipse-Plugin: MercurialEclipse

Für Leute die mehr auf die Kommandozeile stehen, gibts auch ein Tutorial. Lustig geschrieben und es werden alle wichtigen Befehle detailliert beschrieben:
http://hginit.com/

Wie habe ich jetzt mein Problem gelöst? Ich habe Mercurial auf jedem System eingerichtet. Und wenn ich dann von System A auf System B wechsel, starte ich vorher einen Repository-Abgleich. Ganz easy! 🙂

Dieser Beitrag wurde unter Allgemein, Programmierung abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Leave a reply