Was passiert in Ihrem .gitignore, wenn Sie CocoaPods verwenden?
Habe ich auch die iOS-Entwicklung für ein paar Monate jetzt und gerade erfahren, dass der vielversprechende CocoaPods Bibliothek für dependency management.
Ich versuchte es auf einem persönlichen Projekt: es wurde eine Abhängigkeit Kiwi zu meinem Podfile, lief pod install CocoaPodsTest.xcodeproj
und voilaes hat Super geklappt.
Die einzige Sache, die ich bin Links Fragen, ist: was brauche ich und was muss ich ignorieren für die Versionskontrolle? Es scheint offensichtlich, dass ich überprüfen möchten in das Podfile selbst, und wahrscheinlich die .xcworkspace-Datei als gut; aber ich Ignoriere die Hülsen/Verzeichnis? Gibt es andere Dateien, die generiert wird, die Straße runter (wenn ich andere Abhängigkeiten), dass ich auch zu meinen .gitignore?
InformationsquelleAutor der Frage Dan Tao | 2012-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Persönlich check ich nicht in die Hülsen-Verzeichnis & Inhalt. Ich kann nicht sagen, ich verbrachte lange Zeiten in Anbetracht der Auswirkungen, aber meine Argumentation ist so etwas wie:
Dem Podfile bezieht sich auf einen bestimmten tag oder oder verpflichten, von jeder Abhängigkeit, so dass die Hülsen selbst erzeugt werden kann, aus dem podfile, ergo sind Sie eher wie ein intermediate bauen Produkt als eine Quelle, und folglich brauchen nicht, version control in meinem Projekt.
InformationsquelleAutor der Antwort Matt Mower
Ich versuche, mir meine Hülsen-Verzeichnis. Ich bin nicht einverstanden, dass die Hülsen-Verzeichnis ist ein build-Artefakt. In der Tat würde ich sagen, dass es definitiv nicht. Es ist Teil Ihrer Anwendung Quelle: es wird nicht bauen, ohne es!
Es ist einfacher, zu denken, CocoaPods als ein Entwickler-tool, sondern als ein build-tool. Sie nicht erstellen Sie Ihr Projekt, es ist einfach zu Klonen und installiert Ihre Abhängigkeiten für Sie. Es sollte nicht notwendig sein, CocoaPods installiert zu werden, können Sie einfach erstellen Sie Ihr Projekt.
Durch CocoaPods eine Abhängigkeit von Ihren bauen, die Sie jetzt brauchen, um sicherzustellen, es ist überall verfügbar, müssen Sie möglicherweise erstellen Sie Ihr Projekt...ein team admin braucht es, Ihre CI-server benötigt. Sie sollten in der Regel immer in der Lage, Klonen Sie Ihre Quell-repository und build ohne weitere Anstrengung.
Nicht Begehen, Ihre Hülsen-Verzeichnis erstellt auch eine riesige Kopfschmerzen sein, wenn Sie wechseln Häufig den Zweigen. Nun müssen Sie zum ausführen der pod zu installieren, jedes mal, wenn Sie wechseln Zweige, um sicherzustellen, dass Ihre Abhängigkeiten korrekt sind. Dies ist weniger Aufwand als Ihre Abhängigkeiten zu stabilisieren, aber früh in einem Projekt dies ist eine massive Zeit sinken.
Also, was soll ich ignorieren? Nichts. Podfile, die lock-Datei und die Hülsen Verzeichnis alle verpflichtet. Vertrauen Sie mir, es spart Ihnen eine Menge ärger. Was sind die Nachteile? Eine etwas größere repo? Nicht das Ende der Welt.
InformationsquelleAutor der Antwort Luke Redpath
Empfehle ich die Nutzung der GitHub ist Objective-C gitignore.
Im detail, die best practices sind:
Podfile
muss immer unter Kontrolle der Quellcodeverwaltung.Podfile.lock
muss immer unter Kontrolle der Quellcodeverwaltung.:path
option sollte gehalten werden, die unter Kontrolle der Quellcodeverwaltung../Pods
Ordner kann gehalten werden, die unter Kontrolle der Quellcodeverwaltung.Weitere Informationen finden Sie in der official guide.
Quelle: ich bin ein Mitglied der CocoaPods-core-team, wie @Legierung
Obwohl die Hülsen-Ordner ist ein build-Artefakt gibt es Gründe, die Sie vielleicht betrachten, während die Entscheidung, ob zu halten es unter Kontrolle der Quellcodeverwaltung:
:head
und die:git
Optionen, die derzeit nicht im Einsatz begeht, gespeichert in derPodfile.lock
).InformationsquelleAutor der Antwort Fabio
Normalerweise arbeite ich auf app ' s von Kunden. In diesem Fall füge ich die Hülsen Verzeichnis der repo als auch, um sicherzustellen, dass zu jeder Zeit jeder Entwickler tun könnte, die Kasse und erstellen und ausführen.
Wenn es eine app von unserer eigenen würde, würde ich wahrscheinlich ausschließen, dass der Hülsen-Verzeichnis, bis ich nicht auf Sie für eine Weile.
Eigentlich, ich muss feststellen, dass ich möglicherweise nicht die beste person, Ihre Frage zu beantworten, im Vergleich zu Ansichten der Reine Benutzer 🙂 ich werde tweet über diese Frage aus https://twitter.com/CocoaPodsOrg.
InformationsquelleAutor der Antwort alloy
.gitignore-Datei
Keine Antwort eigentlich bietet eine
.gitignore
so sind hier zwei Geschmacksrichtungen.Prüfung in den Hülsen Verzeichnis (Vorteile)
Xcode/iOS-freundliche git ignorieren, überspringen Sie Mac OS-system-Dateien, Xcode-builds, andere repositories und sicherungen.
.gitignore:
Ignorieren die Hülsen Verzeichnis (Vorteile)
.gitignore: (append zum vorherigen Liste)
Wenn
Pods
sind nicht aktiviert, werden auch IhrePodfile
sollte wohl verlangen explizite Versionsnummern für jede Cocoapod. Cocoapods.org Diskussion hier.InformationsquelleAutor der Antwort SwiftArchitect
Ich check-in alles. (
Pods/
undPodfile.lock
.)Ich möchte in der Lage sein zu Klonen Sie das repository und wissen, dass alles nur funktionieren, wie es das Letzte mal Tat ich benutzte die app.
Ich würde eher Verkäufer, die Dinge, als die Gefahr ein, dass unterschiedliche Ergebnisse verursacht werden könnten, indem eine andere version des gem, oder jemand, die Geschichte umzuschreiben, in der die Pod-repository, etc.
InformationsquelleAutor der Antwort funroll
Die Antwort auf diese ist direkt in Cocoapod docs. Sie kann sich bei "http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control"
InformationsquelleAutor der Antwort shah1988
Ich bin in das Lager der Entwickler, die keine check-in-Bibliotheken, vorausgesetzt, wir haben eine gute Kopie in einem anderen Ort. So, in meinem .gitignore ich die folgenden Zeilen enthalten spezifische CocoaPods:
Dann bin ich sicher, dass wir eine Kopie der Bibliotheken an einem sicheren Ort. Eher als (mis-)einen Projekt-code-repository zur Speicherung der Abhängigkeiten (kompiliert oder nicht) ich denke, der beste Weg, dies zu tun ist, um Archiv baut. Wenn Sie ein CI-server für Ihr baut (wie Jenkins) können Sie dauerhaft archivieren alle builds, die Ihnen wichtig sind. Wenn man alle Ihre Produktions-builds in Ihrem lokalen Xcode, machen Sie eine Gewohnheit, die ein Archiv Ihres Projekts für alle builds, die Sie benötigen, um zu halten. So etwas wie:
1. Produkt --> Archiv
Verteilen... Einreichen, um die iOS-App-Store /Save for Enterprise or Ad hoc Deployment /was haben Sie
Zeigen Sie Ihre Projekt-Ordner im Finder
Recht-klicken Sie und Komprimieren "WhateverProject"
Dieser bietet eine as-built-Bild des gesamten Projekts, einschließlich der kompletten Projekt-und workspace-Einstellungen, die verwendet wird, um die app als auch als binary-Distributionen (wie Sparkle, proprietären SDKs wie TestFlight, etc.) ob oder nicht Sie verwenden CocoaPods.
Update: ich habe meine Meinung geändert, auf diese, und jetzt tun, Begehen die
Podfile.lock
zur Quellcodeverwaltung. Aber ich glaube immer noch, dass die Schoten selbst sind build-Artefakte und verwaltet werden sollten als solche, die außerhalb der source-control, die durch eine andere Methode, wie Sie Ihre CI-server oder eine Archivierung, wie ich oben beschreiben.InformationsquelleAutor der Antwort Alex Nauda
Ich lieber zu Begehen
Pods
Verzeichnis zusammen mitPodfile
undPodfile.lock
um sicherzustellen, dass jeder in meinem team kann die Kasse die Quelle jederzeit und Sie müssen nicht um nichts zu kümmern, oder tun, zusätzliche Sachen zu machen, damit es funktioniert.Dies hilft auch, in einem Szenario, in dem Sie haben fixed a bug in einer der Hülsen oder modifiziert einige Verhalten wie pro Ihre Bedürfnisse, aber diese änderungen werden nicht auf anderen Maschinen verfügbar, wenn nicht begangen.
Zu ignorieren und unnötige Verzeichnisse:
InformationsquelleAutor der Antwort nomann
Ich muss sagen, ich bin ein fan der Begehung von Hülsen auf das repository. Nach einem link bereits erwähnt wird Ihnen ein guter .gitignore-Datei zu erhalten, bis Sie Ihre Xcode-Projekte für iOS zu ermöglichen Hülsen, sondern auch für Sie ganz einfach ausschließen, wenn Sie so wollen: https://github.com/github/gitignore/blob/master/Objective-C.gitignore
Meine Argumentation als fan hinzufügen von Hülsen, um das repository ist ein wesentlicher Grund, die niemand scheint zu sein, Kommissionierung bis auf das, was passiert, wenn eine Bibliothek, die unser Projekt ist so abhängig ist, plötzlich aus dem web entfernt?
Konto eröffnen, Was passiert, wenn die Bibliothek ist zu sagen, mehrere Jahre alt
(wie, die älter als 5 Jahre zum Beispiel) es besteht ein hohes Risiko der
Projekt möglicherweise nicht mehr verfügbar sein, an der Quelle
änderungen? Können sagen, die person, die den Pod aus Ihrer GitHub
Konto, beschließt, die stellen sich unter einem anderen handle -
Ihre "Pods" sind die URLs zu brechen.
codieren, wenn auf einem Flug zwischen den Ländern. Ich mache einen schnellen Zug auf
die 'master' - branch, ein pod zu installieren auf diesen Zweig sitzend
im Flughafen und haben mich für die kommenden 8 Stunden
Flug. Ich bekomme 3 Stunden in meinem flight, und ich erkenne, dass ich wechseln zu müssen
ein anderer Zweig.... 'DOH' - fehlt-Pod Informationen, die nur auf die 'master' - branch.
NB... bitte beachten Sie die 'master' - branch für die Entwicklung ist nur für die Beispiele, offensichtlich 'master' - branches in der Versionsverwaltung, sollte sauber gehalten werden und verlegbare/baubare jederzeit
Ich denke, aus diesen Momentaufnahmen im code-repositories sind sicherlich besser, als streng über die repository-Größe. Und wie bereits erwähnt, wird das podfile.lock-Datei - während-version gesteuert wird, geben Sie eine gute Geschichte der Pod-Versionen.
Am Ende des Tages, wenn Sie haben einen dringenden Termin, mit einem knappen budget, die Zeit drängt - wir müssen so einfallsreich wie möglich und verschwenden keine Zeit auf strenge Ideologien, und statt Gurt eine Reihe von tools zusammen zu arbeiten - zu machen unser Leben einfacher, effizienter.
InformationsquelleAutor der Antwort leewilson86
Am Ende ist Ihnen der Ansatz, den Sie nehmen.
Dies ist, was Cocoapods-team denkt darüber:
Persönlich würde ich mag zu halten Hülsen aus, als node_modules wenn ich mit Knoten oder bower_components wenn ich mit Bower. Dies gilt für fast jede Dependency Manager, die es gibt und ist die Philosophie, die hinter git Submodule aswell.
Allerdings gibt es manchmal, möchten Sie vielleicht, um wirklich sicher über die state-of-art eine gewisse Abhängigkeit, so sind Sie tragen selbst die Abhängigkeit in Ihrem Projekt. Natürlich gibt es einige Nachteile, die gelten, wenn Sie das tun, aber Bedenken gelten nicht nur für Cocoapods, diese gilt für alle Dependency Manager gibt.
Unten es ist ein guter vor - /Nachteile Liste gemacht von Cocoapods-team, und der vollständige text des Angebots erwähnt.
Cocoapods-team: Sollte ich überprüfen Sie die Hülsen Verzeichnis in die Quellcodeverwaltung?
InformationsquelleAutor der Antwort zevarito
Es hängt davon ab, persönlich:
Warum pods sollten Teil des repo (unter source control) und sollte nicht ignoriert werden
pods.xcodeproj
Einstellungen sind Teil der Quelle Kontrolle. Dies bedeutet z.B., wenn Sie das Projekt inswift 4
aber einige Schoten müssen inswift 3.2
weil Sie noch nicht aktualisiert haben, werden diese Einstellungen gespeichert. Ansonsten derjenige, der die repo geklont würde am Ende mit Fehler.pod install
das Gegenteil kann nicht getan werden.Einige Nachteile: größere repository, verwirrend diffs (vor allem für team-Mitglieder), die möglicherweise mehr Konflikte.
InformationsquelleAutor der Antwort Jakub Truhlář
Mir, das größte Problem ist die Zukunftssicherheit Ihrer Quelle. Wenn Sie planen, um Ihr Projekt für eine Weile dauern und CocoaPods jemals weggeht oder die Quelle der einer der Hülsen nach unten geht, haben Sie völlig kein Glück, wenn Sie versuchen zu bauen, die frisch aus einem Archiv.
Dies könnte entschärft werden, mit der Sie regelmäßige vollständige Quelle archivals.
InformationsquelleAutor der Antwort Shawn
Check-in die Hülsen.
Ich denke, das sollte ein Grundsatz der software-Entwicklung
reproduzierbar ist die Kontrolle aller Abhängigkeiten; die Prüfung in allen
Abhängigkeiten ist daher ein muss.
Warum?
CocoaPods oder einem anderen externen Bibliotheken ändern könnte, die möglicherweise die Dinge brechen. Oder Sie möglicherweise verschoben oder umbenannt werden, oder werden ganz entfernt. Sie können nicht auf das internet verlassen zum speichern von Sachen für Sie. Dein laptop hätte sterben können und es ist ein Kritischer Fehler in der Produktion behoben werden muss. Der Haupt-Entwickler bekommen von einem bus angefahren und sein Ersatz hat zu starten, bis Sie es eilig haben. Und ich Wünsche mir, dass Letzte war ein theoretisches Beispiel, aber es ist tatsächlich passiert bei einem startup war ich mit. RIP.
Nun, realistisch gesehen, kann man nicht wirklich überprüfen in ALLEN Abhängigkeiten. Sie können nicht überprüfen, in einem Bild der Maschine, die Sie verwendet, um zu erstellen, baut; man kann nicht check-in die genaue version des Compilers. Und so weiter. Es sind realistische Grenzen. Aber check-in alles, was Sie können - nicht tun, so einfach macht Ihr Leben härter. Und das wollen wir nicht.
Letzte Wort: die Kapseln sind nicht build-Artefakte. Build-Artefakte sind das, was generiert wird von Ihrem baut. Ihr build verwendet, Hülsen, nicht zu generieren. Ich bin mir auch nicht sicher, warum dies hat, über die diskutiert werden.
InformationsquelleAutor der Antwort n13
Scheint wie ein guter Weg, um Struktur das wirklich so wäre, haben die "Pods" - Verzeichnis als git-Submodul /separates Projekt, hier ist der Grund.
Mit Hülsen in Ihrem Projekt repo, bei der Arbeit mit mehreren Entwicklern, kann SEHR GROßE Unterschiede bei der pull requests, wo es fast unmöglich ist zu sehen, die eigentliche Arbeit, die geändert wurde, die von Menschen (denken Sie an mehrere Hunderte oder Tausende von Dateien geändert für Bibliotheken, und nur ein wenig verändert in das eigentliche Projekt).
Sehe ich das Thema nicht zu Begehen, alles zu git, als die person, die im Besitz der Bibliothek könnte es abnehmen, zu jeder Zeit, und Sie sind im wesentlichen SOL, das löst auch das.
InformationsquelleAutor der Antwort jaredpetker
Ob oder nicht Sie schauen in Ihre Pods-Ordner ist bis zu Ihnen, wie Sie workflows von Projekt zu Projekt variieren. Wir empfehlen, dass Sie halten die Hülsen Verzeichnis unter Versionskontrolle, und nicht fügen Sie es zu Ihrem .gitignore. Aber letztlich ist diese Entscheidung bis zu Ihnen:
Vorteile der Prüfung in den Hülsen Verzeichnis
Vorteile zu ignorieren, die Schoten Verzeichnis
Solange die Quellen (z.B. GitHub) für alle Hülsen sind verfügbar, CocoaPods ist in der Regel in der Lage, neu zu erstellen die gleiche installation.(Technisch gesehen gibt es keine Garantie, dass die Ausführung pod installieren zu Holen und neu zu erstellen, identische Artefakte, wenn Sie nicht über ein commit-SHA im Podfile. Dies gilt insbesondere bei der Verwendung von zip-Dateien in das Podfile.)
Ob oder nicht Sie schauen in den Hülsen-Verzeichnis, das Podfile und Podfile.sperren sollten immer gehalten werden, die unter version control.
InformationsquelleAutor der Antwort Sourabh Mahna
In der Theorie, sollten Sie überprüfen, in dem Pods-Verzeichnis. In der Praxis ist es nicht immer, zur Arbeit zu gehen. Viele Fruchtstände sowie die die maximale Größe überschreiten der github-Dateien, so dass, wenn Sie mit github wirst du Probleme haben die Prüfung in den Hülsen-Verzeichnis.
InformationsquelleAutor der Antwort Matt