Xcode und GIT

Die Versions-Verwaltung mit GIT ist in Xcode bereits integriert. Bei Anlegen eines neuen Projekts könnt ihr auswählen, ob das Projekt mit einem GIT-Repository angelegt werden soll.

GIT-Repository anlegen

Habt diese Option ausgewählt, wird ein lokales GIT-Repository auf eurem MAC angelegt. Ihr könnt dann in Xcode eure Dateien in diesem Repository verwalten. Im Prinzip führt Xcode den Befehl git init in eurem neuen Projekt aus (siehe auch Versions-Verwaltung mit GIT und legt das Verzeichnis .git in eurem Projekt-Verzeichnis an.

Alternativ ist die Initialisierung des Projekts für die GIT-Versionsverwaltung auch im Xcode-Projektverzeichnis mit folgenden Befehl im Terminal möglich:

git init

Wollt ihr eure Projekte mit anderen Entwicklern teilen, müsst ihr eure Projekt-Dateien in ein zentrales GIT-Repository hochladen. Mit push werden eure Dateien aus dem lokalen Repository ein zentrales Repository hochgeladen.

Hier könnt ihr z.B. das öffentliche Repository Github verwenden. Nachdem ihr euch dort angemeldet habt, könnt ihr das Github-Repository in Xcode einbinden.

Hier möchte ich euch aber zeigen, wie ihr Xcode mit einen eigenen zentralen Repository verbinden könnt. Ich habe dafür meinen Raspberry PI als GIT-Remote-Repository konfiguriert. Wie das geht könnt ihr unter Git-Repository auf dem Raspberry PI.

Nachdem ihr den GIT-Server auf eurem Raspberry PI installiert habt, müsst ihr zunächst ein Repository für euer Xcode-Projekt anlegen. Meldet euch z.B. per SSH in euer PI-Account am Raspberry PI an und legt im Home-Verzeichnis z.B. folgendes Verzeichnis an:

mkdir git
cd git
mkdir xcode
cd xcode
mkdir myXcodeProject
cd myXcodeProject

Initialisiert dann dieses Verzeichnis als GIT-Remote-Repository:

git init --bare

Das war es auch schon auf dem GIT-Remote-Server. Alles weitere passiert dann auf eurem MAC. Startet Xcode mit eurem Xcode-Projekt. Wählt dann den Source Control Navigator. Hier mit der rechten Maustaste auf Remote klicken und Add existing remote… auswählen.

Remote Repository hinzufügen

Im darauf folgenden Dialog könnt ihr als Remote Name einen beliebigen Namen vergeben. Die Location muss mit dem Verzeichnis übereinstimmen, das ihr zuvor auf eurem Raspberry PI angelegt habt. Im Beispiel also pi@yourraspi:/home/pi/git/xcode/myXcodeProject.

Remote-Repository hinzufügen

Danach könnt ihr über das Xcode-Menü Source Control -> Push eure Projekt-Dateien in das Remote-Repository hochladen. Voraussetzung für den Push ist, das alle eure Dateien in das lokale Repository auf eurem MAC „Commited“ sind.

Alternativ könnt ihr das Remote-Repository auch im Terminal mit einem git-Kommando hinzufügen. Xcode macht auch nichts anderes, als das Remote-Repository in die GIT-Konfigurations-Datei config des Projekts im Verzeichnis .git einzutragen.

git remote add xcodeProject pi@yourraspi:/home/pi/git/xcode/myXcodeProject

Mit folgendem Befehl könnt ihr euch in beiden Fällen das Ergebnis anschauen:

git config -l

Möchte ein anderer Entwickler euer Projekt auf seinem MAC verwenden, muss er sich einen Clone vom Remote-Repository auf dem Raspberry PI erzeugen. Das geht ganz einfach im Terminal mit dem Befehl:

git clone pi@unicorno:/home/pi/git/xcode/myXcodeProject

Damit werden alle Dateien des Projekts aus dem Remote-Repository in das aktuelle Verzeichnis kopiert. Wird das Projekt mit Xcode geöffnet, stehen alle Funktionen der GIT-Versionsverwaltung zur Verfügung, wie z.B. Commit, Push oder Pull.

Anlegen einer .gitignore – Datei

In eurem Projekt-Verzeichnis könnt ihr euch eine Datei mit dem Namen .gitignore anlegen. Damit könnt ihr Dateien festlegen, die nicht in die Versions-Verwaltung einbezogen werden sollen. Ein Kandidat ist z.B. die Datei .DS_Store, die vom Apple Datei-System intern verwendet wird.

Am einfachsten könnt ihr diese Datei auf der Seite gitignore erstellen und downloaden. Sucht nach Xcode, lasst euch die Datei erzeugen und kopiert sie in euer Projektverzeichnis. Eventuell müsst ihr noch die Datei .DS_Store manuell hinzufügen.

Das Ergebnis sieht dann ungefähr so aus:

.gitignore

Danach könnt ihr alle eure Projekt-Dateien in das lokale GIT – Repository auf eurem MAC übertragen (commit):

git add .
git commit -m "First commit"

Danach könnt ihr alle Dateien aus eurem lokalen Repository an euer Remote-Repository auf dem Rasperry Pi übertragen (push).  Der Name hinter upstream muss dem Namen aus dem git remote  Eintrag weiter oben entsprechen.

git push --set-upstream xcodeProject master

Danach sollten alle Projektdateien im Repository eures Raspberry Pi sein. Mit git status könnt ihr den Status abfragen. Alle weiteren push zum Remote-Server funktionieren dann mit einem einfachen git push.

Allerdings braucht ihr für alle weiteren Commits und Push nicht die Kommandozeile, sondern könnt alles bequem von Xcode aus durchführen.