Xcode und GIT

Anlegen des GIT-Repositories

Als Server für das GIT-Repository verwende ich in diesem Beispiel den Raspberry PI.

Wollt ihr eure Projekte mit anderen Entwicklern teilen, könnt ihr eure Projekt-Dateien in ein zentrales GIT-Repository hochladen. Hier könnt ihr z.B. das öffentliche Repository Github verwenden. Nachdem ihr euch dort angemeldet habt, könnt ihr das Github-Repository, analog zum Repository auf dem Raspberry Pi, in Xcode einbinden.

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

GIT in XCODE initialisieren

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

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

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

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

Weitere Einträge in die .gitignore

Möchtet ihr euer Projekt in einem öffentlichen Repository )z.B. Git-Hub) mit anderen Entwicklern teilen, solltet ihr eure Apple-Entwickler-Daten, wie Produkt-Bundle-Identifier und euereDevelopment-Team ID (zusammen mit dem Zertifikat), nicht mit hochladen.

Eine elegante Möglichkeit, ist z.B. die Entwickler-Daten in eine eigene XCODE-Konfigurations-Datei auszulagern und diese Datei dann in .gitignore einzutragen. Standardmäßig stehen diese Daten in dem zentralen XCODE-Projekt-Package projektname.xcodeproj.

Zunächst müsst ihr in XCODE über File -> New File eine Konfiguratios-Datei anlegen.

Anlegen eines Konfigurations-Files

In das Konfigurations-File tragt ihr euren Bundle-Identifier und eure Team-ID ein:

PRODUCT_BUNDLE_IDENTIFIER = com.myDomain.myProject
DEVELOPMENT_TEAM = your-team-id

Die Team-ID erhaltet ihr entweder über XCODE, indem ihr z.B. unter Build-Settings auf Other bei dem Attribut DEVELOPMENT_TEAM klickt oder über euer Apple-Account unter den Membership-Details.

Inhalt der Konfigurations-Datei

Danach könnt ihr die beiden Attribute PRODUCT_BUNDLE_IDENTIFIER und DEVELOPMENT_TEAM aus den Build-Properties von XCODE entfernen.

Entfernen der Attribute

Damit XCODE die Konfigurations-Datei auch verwendet, müsst ihr sie in den Infos entsprechend eintragen.

Eintragen der Konfigurations-Datei

Eventuell müsst ihr das Projekt in XCODE neu laden, damit XCODE die neuen Einstellungen verwendet.

Vor dem Push eures Projekts in das öffentliche Repository, müsst ihr noch die Konfigurations-Datei in euer .gitignore eintragen.

Danach wird bei einem Push in das Repository weder eure Team-ID, noch euer Bundle-Identifier in das Repository hochgeladen.

Clone des Projekts

Cloned in Zukunft ein anderer Entwickler euer Projekt, muss er seine eigene Team-ID und Bundle-Identifier verwenden. Dazu hat er zwei Möglichkeiten:

  • Löschen des vermissten Config-Files aus dem Projekt und Eintrag seiner Daten unter Signing Capabilities
  • Anlegen eines neuen Config-Files mit demselben Namen und Einfügen seiner Daten in das Config-File

Upload in das Repository

Sobald ihr die .gitignore – Datei fertig gestellt habt, könnt ihr einen Commit für das ganze Projekt durchführen und danach mit push in das Repository hochladen.

Commit und Push in XCODE

Wechselt zunächst in die Ansicht des Source-Navigators und markiert das Projekt. Dann könnt ihr alle Änderungen, die nicht commited sind, für zu commiten markieren (Stage)

Stage Files

Nach Eingabe eines Kommentars könnt ihr die Änderungen lokal auf euren MAC committen und danach mit push in das Repository hochladen.

Commit

Push

Commit und Push im Terminal

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.

Clone eines GIT-Repositories

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.