GitNub
Zufällig bin ich heute über ein kleine, aber feine Anwendung namens GitNub gestolpert, dessen Zweck auf der eigenen Homepage wie folgt beschrieben wird:
A Gitk-like application written in RubyCocoa that looks like it belongs on a Mac.
Gitk ist eine mit Git mitgelieferte Anwendung, um Änderungen in einem Git-Repository grafisch nachvollziehen zu können. Nachfolgend ein Screenshot.
Wie man sieht, fühlt sich Gitk nicht sehr mac-like an. Mal schauen, ob GitNub das besser kann.
Die Installation erfolgt unter Mac OS X 10.5 mit folgenden Schritten (unter der Voraussetzung, das bereits XCode und git installiert sind):
- RubyCocoa runterladen und installieren
- Folgende Gems installieren:
sudo gem install open4 mime-types
- Im Terminal in ein geeignetes Verzeichnis wechseln, z.B.
cd ~/source
- Git-Repository von GitNub samt Untermodulen klonen:
git clone git://github.com/Caged/gitnub.git cd gitnub git submodule init git submodule update
- GitNub kompilieren:
rake build
- GitNub.app nach /Applications und nub nach /usr/local/bin kopieren:
rake install
- Symbolischen Link in /usr/bin erstellen (sonst findet TextMate nub nicht):
ln -s /usr/local/bin/nub /usr/bin/nub
Nun kann man aus jedem beliebigen Git-Repository einfach nub aufrufen, z.B. in dem Git-Repository, welches wir für GitNub in Schritt 4 geklont haben:
nub
Links neben dem Suchfeld stehen drei Ansichten zur Verfügung: In der ersten Ansicht (siehe oben) werden alle Änderungen dargestellt. In der zweiten Ansicht kann man sich das "Netzwerk" des Projektes auf GitHub (sofern es sich um ein solches Projekt handelt) anschauen. In der dritten Ansicht erscheint links das Projektverzeichnis. Wählt man dort eine Datei aus, wird diese rechts dargestellt und man kann erkunden, welche Zeile der Datei von welchem Autor zuletzt eingecheckt wurde (die Bilder der Autoren holt sich GitNub übrigens von Gravatar).
Einfach und schick, werde ich zukünftig sicher ausgiebig benutzen.
Schlüsselwörter: git, mac, versionskontrolle
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
Firmenname für neue Projekte in Xcode
Wer mit Xcode 3.0 das erste Mal ein neues Projekt erstellt, stolpert über kurz oder lang über die Kommentare, die Xcode in jede erzeugte Quelldatei einfügt:
// Created by Thomas Dohmke on 17.04.08.
// Copyright __MyCompanyName__ 2008. All rights reserved.
Die erste Zeile ist soweit ok (ein vierstelliges Jahr im Datum wäre nett), aber an der zweiten Zeile stört das "__MyCompanyName__", egal ob man nun eine Firma hat oder nicht. Eine ähnliche Ausgabe zeigt auch das Fenster, welches im Menü der Anwendung unter "About NewApplication" erscheint.

Bei einem Blick durch die Projektdateien findet man in der Datei InfoPlist.strings folgenden Eintrag:
NSHumanReadableCopyright = "© __MyCompanyName__, 2008";
Ändert man hier die Zeichenkette "__MyCompanyName__" entsprechend der persönlichen Vorlieben, also z.B.
NSHumanReadableCopyright = "© Thomas Dohmke, 2008";
und kompiliert die Anwendung neu, so zeigt das "About"-Fenster zukünftig den eigenen Namen.

Für die Kommentare in den Quelldateien ist hingegen der folgende Befehl im Terminal einzugeben:
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ORGANIZATIONNAME = "Thomas Dohmke";}'
Für bereits existierende Quelldateien hilft das allerdings nicht (hier muss man den Menüpunkt "Edit > Find > Find in Project..." oder Shift+Cmd+F bemühen), aber zumindest alle neuen Quelldateien beinhalten nach einem Neustart von Xcode den richtigen Firmennamen.
Schlüsselwörter: mac, programmierung, xcode
Inoffizieller Start
Der offizielle Start dieses Blogs ist geplant für den 01.01.2009, aber da wir in den nächsten Tagen ein paar Live-Tests machen wollen, gibt es hiermit schon mal einen inoffiziellen Startschuss.
Schlüsselwörter: blog
« Neuere Artikel 1 ... 12 13 14
Schlüsselwörter
- berlin (2)
- blog (5)
- browser (2)
- cocoaheads (5)
- dropbox (1)
- git (7)
- idisk (1)
- iphone (28)
- javascript (2)
- kurztip (4)
- linktips (17)
- mac (9)
- macruby (1)
- objective-c (8)
- ortung (1)
- programmierung (22)
- rails (1)
- railsconf (7)
- ruby (6)
- ruby on rails (7)
- schnipsel (14)
- server (2)
- spiele (1)
- statistiken (3)
- stuttgart (3)
- testen (4)
- tidy (1)
- versionskontrolle (5)
- wwdc (1)
- xcode (9)
- xml (1)



