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.
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.
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.
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:
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.
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.
Danach könnt ihr die beiden Attribute PRODUCT_BUNDLE_IDENTIFIER und DEVELOPMENT_TEAM aus den Build-Properties von XCODE entfernen.
Damit XCODE die Konfigurations-Datei auch verwendet, müsst ihr sie in den Infos entsprechend eintragen.
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)
Nach Eingabe eines Kommentars könnt ihr die Änderungen lokal auf euren MAC committen und danach mit push in das Repository hochladen.
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.