Xcode-Projekte in Git anlegen

Um ein Xcode-Projekt in Git anzulegen, habe ich ein kleines Shell-Skript geschrieben (Download), das folgende Schritte ausführt:

  1. Ein leeres Git-Repository erzeugen.

  2. Die Datei .gitignore mit folgendem Inhalt erstellen:
    build
    *.pbxuser
    *.mode1v3
    .DS_Store
    Damit werden das build-Verzeichnis, benutzerspezifische Dateien sowie die von Mac OS X angelegten .DS_Store-Müllhalden von der Versionierung ausgeschlossen.

  3. Die Datei .gitattributes mit folgendem Inhalt erstellen:
    *.pbxproj -crlf -diff -merge
    Der Parameter "-crlf" bewirkt, dass für Dateien mit der Endung .pbxproj keine Transformation der Zeilenumbrüche vorgenommen wird, "-diff" und "-merge" schließt den Vergleich (diff) und die Zusammenführung (merge) mit vorherigen Versionen aus.

  4. Den derzeitigen Stand in das Repository einchecken.
Der Aufruf im Terminal sieht dann wie folgt aus (nachfolgend als Beispiel für ein Cocoa-Projekt, das unter ~/Projects/PeachApp abgelegt wurde):
$ cd ~/Projects/PeachApp
$ xcode-git-init.sh 
Initialized empty Git repository in ~/Projects/PeachApp/.git/
Creating .gitignore.
Creating .gitattributes.
Commiting initial revision.
add '.gitattributes'
add '.gitignore'
add 'English.lproj/InfoPlist.strings'
add 'English.lproj/MainMenu.xib'
add 'Info.plist'
add 'PeachApp.xcodeproj/TemplateIcon.icns'
add 'PeachApp.xcodeproj/project.pbxproj'
add 'PeachApp_Prefix.pch'
add 'main.m'
Created initial commit 902b78f: Initial revision.
 9 files changed, 3088 insertions(+), 0 deletions(-)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 English.lproj/InfoPlist.strings
 create mode 100644 English.lproj/MainMenu.xib
 create mode 100644 Info.plist
 create mode 100644 PeachApp.xcodeproj/TemplateIcon.icns
 create mode 100644 PeachApp.xcodeproj/project.pbxproj
 create mode 100644 PeachApp_Prefix.pch
 create mode 100644 main.m
Finished. Have fun.

So bekommt man einfach und schnell ein Repository für ein Xcode-Projekt, egal, ob es sich dabei um das nächste große Ding handelt oder nur um einen Prototypen. Denn wie schrieben Andy Hunt und Dave Thomas schon 1999:

Always Use Source Code Control. Always. Even if you are a single-person team on a one-week project. Even if it's a "throw-away" prototype. Even if the stuff you're working on isn't source code. Make sure that everything is under source code.

Aus The Pragmatic Programmer, Kapitel 17, Seite 86ff.

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

Von Thomas Dohmke vor 602 Tagen hinzugefügt


Kommentare

Von alex vor 311 Tagen hinzugefügt

Danke, funktioniert prima und spart ein wenig Arbeit!

Einziger Schönheitsfehler: Das shell-script wird ebenfalls ins repo aufgenommen, ist das beabsichtigt?

Von Thomas Dohmke vor 311 Tagen hinzugefügt

Einfach das Shell-Skript in ein anderes Verzeichnis legen (ich habe es in ~/scripts) und dieses Verzeichnis dem PATH hinzufügen.

Von Anonymous vor 310 Tagen hinzugefügt

Manchmal ist die Lösung eh so einfach, ich hätte das script schon so umgebaut, dass es einen Pfad entgegennimmt.

thx!

Von Michael vor 224 Tagen hinzugefügt

Ich würde für in der .gitignore Datei die Zeile

*.mode1v3

ändern in

*.mode?v3

und außerdem noch die Zeile

*.perspectivev3

hinzufügen. Damit erwischt man dann auch alle "Workspace-Modi" von Xcode.

Kommentar hinzufügen

Twitter

Uns auf Twitter verfolgen: