Git, iDisk und so

Am 03. Mai 2007 gab Linus Torvalds einen Google Tech Talk Linus Torvalds on git über das ursprünglich von ihm entwickelte Versionskontrollsystem Git. Der Vortrag ist stark geprägt von Linus' persönlichen Ansichten, dennoch war er der Anlass für mich, mal einen Blick auf Git unter Mac OS X zu werfen.

Installation

Für die Installation gibt es gleich mehrere Wege. Man kann den git-osx-installer runterladen, Git selber kompilieren wie im Artikel Installing Git 1.5.2.4 on Mac OS X Leopard beschrieben, oder einfach MacPorts verwenden, das ich eh schon installiert hatte. Mit letzterem genügt es, die Zeile

sudo port install git-core +svn

im Terminal einzugeben und ein paar Minuten zu warten. Nach Abschluss der Installation erzeugt der Befehl

which git

die folgende Ausgabe:

/opt/local/bin/git

Erstellung eines lokalen Repository

Ein lokales Repository lässt sich mit einem einzigen einfachen Befehl erzeugen, sofern man zuvor in das jeweilige Projektverzeichnis gewechselt hat (z.B. ~/Projects/PearApp):

cd ~/Projects/PearApp
git init

Dabei spielt es keine Rolle, ob sich in diesem Verzeichnis schon Dateien befinden. Der Befehl legt lediglich ein neues Verzeichnis .git an, welches sämtliche Dateien des noch leeren Repository enthält.

Hinzufügen von Dateien

Das Hinzufügen einer Datei oder eines Verzeichnisses zum Repository geschieht mit folgenden Befehl:

git add PearApp.xcodeproj

Git durchsucht dabei angegebene Unterverzeichnisse rekursiv und berücksichtigt die darin gefundenen Dateien. Ergo lassen sich alle Dateien eines Projektes mit folgendem Befehl hinzufügen:

git add *

Will man eine ausführlichere Ausgabe erhalten, fügt man vorher den Parameter -v hinzu,

git add -v *

oder lässt sich nachträglich den Status anzeigen:

git status

Schließlich beendet man den Vorgang mittels

git commit -m "Initial revision."

Die Zeichenkette hinter dem Parameter -m beschreibt die Änderungen als so genannte "Commit Message". Lässt man den Parameter weg, so öffnet sich automatisch der bevorzugte Editor, um dort entsprechenden Text einzugeben.

Schieben und Ziehen

Einer der wesentlichen Unterschiede zwischen Git und anderen Versionskontrollsystemen, wie z.B. CVS oder Subversion, ist der dezentrale Ansatz. Es existiert kein zentraler Server, auf dem das einzige Repository gespeichert ist. Stattdessen besitzt jeder Benutzer seine eigene lokale Kopie des Repository. Jede Kopie ist im gewissen Sinne gleichberechtigt, d.h. es existiert per Definition kein Hauptentwicklungszweig des Projektes.

Zurück zum Beispielprojekt. Bisher liegt das erstelle Repository lediglich lokal unterhalb des Projektverzeichnisses. Will man mit mehreren Entwicklern zusammen arbeiten oder einfach seine Daten vor einer kaputten Festplatte, Diebstahl oder dem versehentlichen Löschen des Verzeichnisses bewahren, ist es sinnvoll, eine Kopie auf einem räumlichen getrennten Speicherplatz zu sichern. Ich verwende dafür die iDisk meines MobileMe-Kontos. Diese lässt sich so einrichten, dass sie auch offline verwendet werden kann und bei einer Verbindung mit dem Internet automatisch synchronisiert wird. Dazu ist in den Einstellungen von .mac lediglich der Button "Start" im Bereich "Synchronisierung der iDisk" zu drücken.

Die iDisk ist fortan im Verzeichnis /Volumes/${USERNAME} ansprechbar, egal ob man online oder offline ist. Das lokale Repository wird über den folgenden Befehl in ein Unterverzeichnis der iDisk geklont,

mkdir /Volumens/${USERNAME}/Repository/
cd ~/Projects/PearApp
git clone --bare . /Volumes/${USERNAME}/Repository/PearApp.git

und anschließend als zusätzliches Repository dem Projekt hinzugefügt:

git remote add idisk /Volumes/${USERNAME}/Repository/PearApp.git

Der Bezeichner nach "add" kann beliebig gewählt werden, das initiale Repository heißt stets "master", für das Repository auf der iDisk fiel meine Wahl auf "idisk".

Zwischen beiden Kopien tauscht man Dateien mittels Ziehen ("pull") und Schieben ("push") aus. Habe ich die Arbeit an einer Datei beendet, übergebe ich die Datei dem lokalen Repository ("commit") und schiebe dieses in das Repository auf der iDisk:

git commit -m "Did some changes." 
git push idisk

Umgekehrt ziehe ich Dateien von der iDisk, wenn ich diese beispielsweise im Büro bearbeitet und von dort aus eingecheckt habe:

git pull idisk

Stellt sich noch die Frage, wie bekomme ich überhaupt eine Kopie des Repository im Büro? Nichts einfacher als das:

git clone /Volumes/${USERNAME}/Repository/PearApp.git

Mehr Informationen

Zum Schluss noch ein paar Links zu Git, wovon besonders der letzte für Benutzer von Subversion interessant sein dürfte, beschreibt er doch die Benutzung von Git im Vergleich zu Subversion.

Schlüsselwörter: git, idisk, mac, versionskontrolle

Von Thomas Dohmke vor 612 Tagen hinzugefügt


Kommentare

Kommentar hinzufügen

Twitter

Uns auf Twitter verfolgen: