SVN vs. Git: 1 zu 3

An meinem Arbeitsplatz benutze ich täglich das VersionskontrollsystemSubversion und bin eigentlich glücklich damit. Seit einiger Zeit spiele ich in meiner Freizeit mit der Alternative Git herum und konnte mich zuerst nicht wirklich damit anfreuden. Mittlerweile habe ich gemerkt, woran das lag: Ich fühle mich erst wirklich sicher, wenn mein Code auf zwei Maschinen existiert (Lokal und in einem entfernten Repository). Bei Subversion funktioniert das folgendermassen:

svn commit

Bei Git hingegen, sind dafür drei Befehle notwendig:

git add
git commit
git push

Der dreifache Aufwand für dasselbe Resultat. Es existieren zwar Abkürzungen, aber dann verpasst man die eigentliche Idee an der Add & Commit-Konstruktion: Spezifischere Commits ohne die beliebte Allerweltsnachricht ‚Diverse Änderungen‘.

Mittlerweile bin ich etwas vertrauter mit dem Umgang und beginne Git zu schätzen. Letzte Woche wagte ich sogar schon in fremden Code einen Fehler zu korrigieren und einen Pull-Request abzusetzen. Auch wenn das betroffene Projekt kaum Aktivität zeigt, freue ich mich doch über die Möglichkeit, derart einfach an einem Projekt mitzuwirken. Git und Github sind wunderbare Werkzeuge für Open Source.

Dropbox-Idee: Privates SVN-Repository hosten

Bisher konnte ich mit meinem 2gb-Festplatten-Platz in der Web 2.0-Wolke namens Dropbox nicht besonders viel anfangen. Aber ein Artikel über den automatischen Bittorrent-Download via Dropbox animierte mich zum Überdenken:

Ich stand vor kurzem vor dem Problem dass ich mein privates SVN-Repository erreichbar von aussen halten musste, aber nicht meinen Laptop zu Hause den ganzen Tag laufen lassen wollte. Da kam mir die Idee das Repository auf die Dropbox zu stellen.

Mit dem Tool SymbolicLinker habe ich einen Symlink zu meinem Repository in die Dropbox gestellt. Diese synchronisiert seither ohne zu Mucken meine Commits übers Netz auf jede meiner Arbeitsstationen.

SVN-Server Mac OS X ‚leichtgemacht‘

Manchmal ist alles einfacher als ich denke.

Das Szenario: Meine Webseiten sind, wie viele andere meiner Daten auch, in meinem lokalen Subversion-Repository gespeichert. Anstatt diese jetzt jeweils mühsam per FTP auf den Webserver zu laden und dabei immer wieder einzelne Dateien zu vergessen, mache ich seit kurzem ein direktes Checkout vom Server aus. Und natürlich nahm ich an dass ich für eine solche Aktion den kompletten SVN-Serverdienst auf meinem MacBook installieren muss.

Falsch.

Die Protokollkombination svn+ssh kann sich nähmlich über handelsübliches SSH am MacBook anmelden und direkt aufs Repository zugreifen.

Das funktioniert natürlich nur im Einzelbenutzermodus wie bei mir: Für das SSH-Login braucht es nähmlich das Passwort zu meinem OS X-Benutzerkontos. Evt. könnte man das Repository auch in das Shared-Verzeichnis positionieren, aber das habe ich nicht ausprobiert. Zusätzlich muss natürlich Entfernte Anmeldung im Sharing-Panel aktiv sein, die Firewall diese noch durchlassen, evt. Port-Forwarding auf dem ADSL-Router aktivieren und dann mit Hilfe eines Services wie DynDNS.com eine dynamische Adresse des MacBooks eingerichtet sein.

Ich nehme naiverweise an dass wer SVN benutzt, diese Konfiguration auch von alleine schafft.

Für das Checkout vom Server ist jetzt nur noch folgendes Kommando auf dem entfernten System nötig, um sich die Daten vom lokalen System zu holen:

svn checkout --username BENUTZERNAME svn+ssh://SVNSERVERNAME.dyndns.org/Users/BENUTZERNAME/ABSOLUTER/PFAD/ZUM/REPOSITORY/PROJEKTNAME/ .

Einmal eingerichtet, funktionieren die Updates dann einfach mit:

svn update