Frage

Ich beschäftige mich jetzt seit ein paar Monaten mit der iOS-Entwicklung und habe gerade von der vielversprechenden Entwicklung erfahren Kakaoschoten Bibliothek für das Abhängigkeitsmanagement.

Ich habe es an einem persönlichen Projekt ausprobiert:eine Abhängigkeit hinzugefügt Kiwi zu meinem Podfile, ran pod install CocoaPodsTest.xcodeproj, Und Voila, es hat super funktioniert.

Das Einzige, was ich mich noch frage, ist:Was muss ich einchecken und was ignoriere ich für die Versionskontrolle?Es scheint offensichtlich, dass ich die Poddatei selbst und wahrscheinlich auch die .xcworkspace-Datei einchecken möchte.aber ignoriere ich das Pods/-Verzeichnis?Gibt es andere Dateien, die später generiert werden (wenn ich andere Abhängigkeiten hinzufüge), die ich ebenfalls zu meiner .gitignore-Datei hinzufügen sollte?

War es hilfreich?

Lösung

Ich checke persönlich nicht in den Pods-Verzeichnis & Inhalten.Ich kann nicht sagen, dass ich lange Zeit in Betracht gezogen habe, wenn man die Auswirkungen in Betracht ziehen, aber meine Argumentation ist so etwas wie:

Der PodFile bezieht sich auf ein bestimmtes Tag oder ein bestimmtes Abhängigkeit, so dass die Hülsen selbst aus dem PodFile erzeugt werden können, ergut sie eher ein Zwischenaufbauprodukt als eine Quelle, und daher brauche keine Versionskontrolle inmein Projekt.

Andere Tipps

Ich begriff mein Pods-Verzeichnis. Ich stimme nicht zu, dass das Pods-Verzeichnis ein Build-Artefakt ist. In der Tat würde ich sagen, dass es definitiv nicht ist. Es ist Teil Ihrer Anwendungsquelle: Es wird nicht ohne es bauen!

Es ist einfacher, an Kokoapoden als Entwickler-Tool anstelle eines Build-Tools zu denken. Es baut Ihr Projekt nicht auf, es klingt einfach und installiert Ihre Abhängigkeiten für Sie. Es sollte nicht notwendig sein, Kakoapoden installiert zu haben, um einfach Ihr Projekt aufbauen zu können.

Wenn Sie Kokoapoden eine Abhängigkeit Ihres Builds herstellen, müssen Sie jetzt sicherstellen, dass es überall verfügbar ist, wo Sie möglicherweise Ihr Projekt erstellen müssen. Sie sollten in der Regel Ihr Quell-Repository immer klonen und ohne weitere Anstrengungen aufbauen.

Das Verzeichnis Ihres Pods nicht beginnt, erstellt auch einen massiven Kopfschmerz, wenn Sie oft Zweige wechseln. Jetzt müssen Sie Pod installieren, wenn Sie Zweige wechseln, um sicherzustellen, dass Ihre Abhängigkeiten korrekt sind. Dies könnte weniger Ärger sein, da Ihre Abhängigkeiten stabilisieren, aber früh in einem Projekt ist dies ein massives Zeitsenken.

Also, was ignoriere ich? Nichts. PODFILE, Die Sperrdatei und das Verzeichnis der PODs werden alle begangen. Vertrauen Sie mir, es wird Sie viel Ärger ersparen. Was ist die Nachteile? Eine etwas größere Repo? Nicht das Ende der Welt.

Ich empfehle die Verwendung des GitHubs Objective-C-Gitignore.Im Einzelnen sind die Best Practices:

  • Der Podfile muss immer unter Quellcodeverwaltung stehen.
  • Der Podfile.lock muss immer unter Quellcodeverwaltung stehen.
  • Der von CocoaPods generierte Arbeitsbereich sollen unter Quellcodeverwaltung gehalten werden.
  • Jeder Pod, auf den verwiesen wird :path Möglichkeit sollen unter Quellcodeverwaltung gehalten werden.
  • Der ./Pods Ordner dürfen unter Quellcodeverwaltung gehalten werden.

Weitere Informationen finden Sie im offizieller Führer.

Quelle:Ich bin Mitglied des CocoaPods-Kernteams, genau wie @alloy


Obwohl der Pods-Ordner ein Build-Artefakt ist, gibt es Gründe, die Sie berücksichtigen sollten, wenn Sie entscheiden, ob er unter Quellcodeverwaltung bleiben soll:

  • CocoaPods ist kein Paketmanager, daher könnte der Autor die Originalquelle der Bibliothek in Zukunft entfernen.
  • Wenn der Pods-Ordner in der Quellcodeverwaltung enthalten ist, ist es nicht erforderlich, CocoaPods zu installieren, um das Projekt auszuführen, da das Auschecken ausreichen würde.
  • CocoaPods ist noch in Arbeit und es gibt Optionen, die nicht immer zum gleichen Ergebnis führen (z. B. die :head und das :git Optionen verwenden derzeit nicht die in gespeicherten Commits Podfile.lock).
  • Es gibt weniger Fehlerquellen, wenn Sie die Arbeit an einem Projekt nach mittlerer/langer Zeit wieder aufnehmen.

.gitignore-Datei

Keine Antwort Genau genommen Bietet ein .gitignore, also hier sind zwei Geschmacksrichtungen.


Einchecken im Pods-Verzeichnis (Vorteile)

Xcode/iOS-freundliches Git-Ignorieren, Überspringen von Mac OS-Systemdateien, Xcode, Builds, anderen Repositorys und Backups.

.gitignore:

# Mac OS X Finder
.DS_Store

# Private Keys
*.pem

# Xcode legacy
*.mode1
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*.pbxuser

# Xcode
xcuserdata/
project.xcworkspace/
DerivedData/

# build products
build/
*.[oa]

# repositories
.hg
.svn
CVS

# automatic backup files
*~.nib
*.swp
*~
*(Autosaved).rtfd/
Backup[ ]of[ ]*.pages/
Backup[ ]of[ ]*.key/
Backup[ ]of[ ]*.numbers/

Das Pods-Verzeichnis wird ignoriert (Vorteile)

.gitignore: (an vorherige Liste anhängen)

# Cocoapods
Pods/

Unabhängig davon, ob Sie im Pods-Verzeichnis einchecken oder nicht, sollten Podfile und Podfile.lock immer unter Versionskontrolle stehen.

Wenn Pods sind nicht eingecheckt, Ihr Podfile sollte wahrscheinlich explizite Versionsnummern für jeden Cocoapod anfordern.Cocoapods.org-Diskussion Hier.

Ich arbeite im Allgemeinen an der Apps von Kunden.In diesem Fall füge ich das Pods-Verzeichnis auch dem Repo hinzu, um sicherzustellen, dass jeder Entwickler jederzeit eine Kasse erstellen und bauen und ausführen kann.

Wenn es sich um eine eigene App handelt, würde ich das Pods-Verzeichnis wahrscheinlich ausschließen, bis ich keine Zeit lang daran arbeite.

eigentlich muss ich abschließen> https://twitter.com/cocoapodsorg .

Die Antwort hierfür ist direkt in CocoapoPOP-Dokumenten angegeben. Sie können sich auf " http://guides.cocoapods.org/using/using-cocoapods.html#.hould-i -idore-the-pods-directory-in-source-control "

Ob Sie in Ihrem Pods-Ordner einchecken oder nicht, liegt an Ihnen, als Workflows variieren von Projekt bis zum Projekt. Wir empfehlen, dass Sie das halten Pods-Verzeichnis unter Source Control, und fügt es nicht hinzu .gitignore. Aber letztendlich liegt diese Entscheidung an Ihnen:

Vorteile der Überprüfung des PODS-Verzeichnisses

  • Nachdem Sie den Repo klonieren, kann das Projekt sofort bauen und ausgeführt werden, selbst ohne Kakaapoden auf der Maschine installiert zu sein. Es gibt kein müssen die POD-Installation ausführen, und es ist keine Internetverbindung erforderlich.
  • Die Pod-Artefakte (Code / Bibliotheken) sind immer verfügbar, auch wenn die Quelle einer Pod (z. B. Github) nach unten gehen würde.
  • Die Pod-Artefakte sind garantiert mit denen in der ursprünglichen Installation identisch, nachdem sie den Repo geklappt haben.

    Vorteile des Ignorierens des Pods-Verzeichnisses

    • Die Quellsteuerungs-Repo ist kleiner und nimmt weniger Platz auf.

    • Solange die Quellen (z. B. Github) für alle Hülsen verfügbar sind, können Cocoapods im Allgemeinen dieselbe Installation neu erstellen. (Technisch gibt es keine Garantie, dass die Laufpod-Installation läuft und erstellen Sie identische Artefakte, wenn Sie keine Commission SHA in der Podfile. Dies gilt insbesondere bei der Verwendung von ZIP-Dateien in der PodFile.)

    • Es wird keine Konflikte geben, um sich mit der Durchführung von Quellkontrollvorgängen umzugehen, z. B. mit unterschiedlicher Pod Versionen.

      Ob Sie das PODS-Verzeichnis, den PodFile und einchecken, oder nicht Podfile.lock sollte immer unter Versionskontrolle gehalten werden.

Ich überprüfe alles.(Pods/CODE UND GENERACDICETAGCODE.)

Ich möchte das Repository klonen und wissen, dass alles einfach funktioniert, da ich das letzte Mal die App verwendet habe.

Ich würde lieber Dinge einkaufen als das Risiko mit unterschiedlichen Ergebnissen, die durch eine andere Version des Juwels verursacht werden könnten, oder jemand, der die Geschichte im Repository von Pod umschreibt, usw.

Ich bin im Lager von Entwicklern, die keine Bibliotheken einchecken, vorausgesetzt, wir haben eine gute Kopie an einem anderen Ort. Also in meiner .gitignore i füge folgende Zeilen, die spezifisch auf Kokaapoden sind: generasacodicetagpre.

Ich sorge dann sicher, dass wir eine Kopie der Bibliotheken an einem sicheren Ort haben. Anstatt (falsch), verwenden Sie das Code-Repository eines Projekts, um Abhängigkeiten (kompiliert oder nicht) zu speichern. Ich denke, der beste Weg, dies zu tun, ist das Archivieren von Builds. Wenn Sie einen CI-Server für Ihre Builds (z. B. Jenkins) verwenden, können Sie dauerhafte Builds dauerhaft archivieren, die für Sie wichtig sind. Wenn Sie alle Ihre Produktion in Ihrem lokalen Xcode erstellen, nehmen Sie eine Angewohnheit, ein Archiv Ihres Projekts für alle Builds zu nehmen, die Sie behalten müssen. So etwas wie: 1. Produkt -> Archiv

    .
  1. verteilen ... Senden Sie dem iOS App Store / speichern für Enterprise oder Ad-hoc-Bereitstellung / Was haben Sie

  2. zeigt Ihren Projektordner in Finder

  3. Klicken Sie mit der rechten Maustaste auf und komprimieren Sie "WhateverProject"

    Dies stellt ein aufgebaute Bild des gesamten Projekts bereit, einschließlich der vollständigen Projekt- und Arbeitsbereichseinstellungen, die zum Erstellen der App sowie binären Verteilungen (z. B. funkeln, proprietärer SDKs wie TestFlight usw.) verwendet werden, unabhängig davon, ob sie Verwenden Sie Kokoapoden.

    update: Ich habe mich darauf geändert und nun den generationspflichtigen Code an die Quellsteuerung begehen. Ich bin jedoch immer noch der Meinung, dass die Pods selbst Artefakte aufbauen und als solche außerhalb der Quellsteuerung durch ein anderes Verfahren wie Ihren CI-Server oder einem Archivvorgang wie oben beschrieben verwaltet werden sollten.

Ich ziehe es vor, das generationspabeditagagcode-Verzeichnis zusammen mit dem generationspflichtigen atgl.

Dies hilft auch in einem Szenario, in dem Sie einen Fehler in einem der Hülsen behoben haben oder ein anderes Verhalten gemäß Ihren Anforderungen modifiziert haben, aber diese Änderungen sind nicht auf anderen Maschinen verfügbar, wenn sie nicht begangen werden.

und um unnötige Verzeichnisse zu ignorieren: generasacodicetagpre.

Ich muss sagen, ich bin ein Fan von Begehung von Pods in das Repository. Nach einem bereits erwähnten Link erhalten Sie eine gute .gitignore-Datei, um Ihre Xcode-Projekte für iOS aufzustehen, um PODs zuzulassen, aber auch für Sie, um sie leicht auszuschließen, wenn Sie dies wünschen: Https://github.com/github/gitignore/blob/master/object-c.gitignore

Mein Ermessen für den Fan des Hinzufügens von Hülsen in das Repository ist für einen grundlegenden Grund, den niemand anscheinend anscheinend anscheint, was passiert, wenn eine Bibliothek, die unser Projekt so abhängig ist, plötzlich aus dem Web entfernt wird?

  • Vielleicht entscheidet der Gastgeber, dass sie ihren Github nicht mehr behalten wollen Konto offen, was passiert, wenn die Bibliothek mehrere Jahre alt ist (wie zum Beispiel älter als 5 Jahre) Es besteht ein hohes Risiko Das Projekt kann nicht mehr an der Quelle verfügbar sein
  • auch ein weiterer Punkt, was passiert, wenn die URL zum Repository Änderungen? Lasst uns sagen, die Person, die der Pod von ihrem Github serviert Konto beschließt, sich unter einem anderen Griff darzustellen - Ihre Pods-URLs werden brechen.
  • endlich noch einen Punkt. Sag, wenn du ein Entwickler bist wie ich, der viel tut der Kodierung wann auf einem Flug zwischen Ländern. Ich ziehe schnell an Der Zweig der Master-Niederlassung, eine Pod installieren in diesem Zweig, während Sie sitzen am Flughafen und habe mich alle für die bevorstehende 8-Stunde gesetzt Flug. Ich bekomme 3 Stunden in meinen Flug, und erkennen Sie, bis ich wechseln muss Ein weiterer Zweig .... 'Doh' - fehlende Pod-Informationen, die nur auf dem Master-Zweig verfügbar ist.

    nb ... Bitte beachten Sie, dass der Zweig der "Master" für die Entwicklung nur für Beispiele ist, nur für Beispiele, offensichtlich "Master" -Zweig in Versionskontrollsystemen, sollte jederzeit sauber und einsetzbar aufbewahrt werden

    Ich denke daran, dass Snapshots in Ihren Code-Repositorys sicherlich besser sind, als auf der Repository-Größe streng zu sein. Wie bereits erwähnt, gibt die PODFILE.LOCK-Datei - während die Version kontrolliert Ihnen eine gute Geschichte Ihrer Pod-Versionen gibt.

    Am Ende des Tages, wenn Sie einen Drücken von Frist haben, ist ein knappes Budget, Zeitpunkt der Essenz - wir müssen so einfallsreich wie möglich sein und keine Zeit mit strengen Ideologien verschwenden, und stattdessen ein Werkzeugsatz aufzunehmen zusammenarbeiten -, um unser Leben effizienter zu gestalten.

Am Ende liegt an Ihnen der Ansatz, den Sie nehmen.

Das ist, was das Cocoapods-Team darüber nachdenkt:

Ob Sie in Ihrem Pods-Ordner einchecken oder nicht, liegt an Ihnen, als Workflows variieren von Projekt bis zum Projekt. Wir empfehlen, dass Sie das halten Pods-Verzeichnis unter Source Control, und fügt es nicht hinzu .gitignore. Aber letztendlich liegt diese Entscheidung an Ihnen.

Ich hätte gerne pods out, wie node_modules wenn ich knoten oder bower_components verwendet habe Wenn ich bower benutze. Dies gilt für fast jeden Abhängigkeitsleiter da draußen und ist die Philosophie hinter git submodulen aswell.

Es gibt jedoch manchmal, dass Sie vielleicht wirklich sicher sein wollen, dass Sie sich mit dem -modernsten einer bestimmten Abhängigkeit, so dass Sie die Abhängigkeit in Ihrem Projekt besitzen möchten. Natürlich gibt es mehrere Nachteile, die gelten, wenn Sie dies tun, aber die Bedenken gelten jedoch nicht nur für Kokoapoden, sondern gilt für jeden Abhängigkeitsleiter da draußen.

Nachfolgend gibt es eine gute -Ver- / cons -Liste, die von Cocoapods-Team hergestellt wird, und der vollständige Text des zuvor genannten Zitats.

Cocoapods-Team: Soll ich das Pods-Verzeichnis in die Quellsteuerung überprüfen?

es hängt persönlich ab:

Warum sollten Pods Teil des Repo (unter Source Control) sein und nicht ignoriert werden,
  • Die Quelle ist identisch
  • Sie können es sofort so bauen, wie es ist (auch ohne Cocoapods)
  • Auch wenn ein Pod gelöscht wird, haben wir noch seine Kopie (ja, dies kann passieren und es tat es. In einem alten Projekt, in dem Sie nur eine kleine Änderung wünschen, müssen Sie eine neue Bibliothek umsetzen, um eine neue Bibliothek zu implementieren sogar bauen).
  • pods.xcodeproj-Einstellungen sind auch Teil der Quellsteuerung. Dies bedeutet, z. Wenn Sie das Projekt in swift 4 haben, müssen jedoch einige PODs in der generakodicetagcode sein, da sie noch nicht aktualisiert werden, diese Einstellungen werden gespeichert. Ansonsten würde derjenige, der den Repo klonierte, mit Fehlern enden.
  • Sie können Pods immer vom Projekt löschen und generationspflichtig ausführen, das Gegenteil kann nicht erfolgen.
  • Sogar die Autoren der Kakaapoden empfehlen es.

    ein paar cons: größeres repository, verwirrend diffs (hauptsächlich für teammitglieder), möglicherweise mehr Konflikte.

an mich, das größte Anliegen ist zukunftsweisend Ihre Quelle.Wenn Sie darauf hinabstellen, dass Ihr Projekt eine Weile dauern kann, und Cocoapods gehen jemals weg oder die Quelle eines der Hülsen runter geht es völlig aus Glück, wenn Sie versuchen, frisch aus einem Archiv zu bauen.

Dies könnte mit periodischen Vollquellenarchivals gemindert werden.

Überprüfen Sie in den Hülsen.

Ich denke, das sollte ein Grundsatz der Softwareentwicklung sein

  • Alle Builds müssen reproduzierbar sein
  • der einzige Weg, um die Builds zu gewährleisten reproduzierbar ist die Kontrolle aller Abhängigkeiten; Überprüfung aller Abhängigkeiten ist daher ein Muss.
  • Ein neuer Entwickler, der von Grund auf ein neues Entwickler beginnt, kann Ihr Projekt überprüfen und mit der Arbeit beginnen.

    warum?

    Cocoapods oder andere externe Bibliotheken können sich möglicherweise ändern, die die Dinge brechen könnten. Oder sie könnten sich bewegen oder umbenannt oder insgesamt entfernt werden. Sie können sich nicht auf das Internet verlassen, um Dinge für Sie zu speichern. Ihr Laptop könnte gestorben sein und es gibt einen kritischen Fehler in der Produktion, der behoben werden muss. Der Hauptentwickler könnte von einem Bus getroffen werden, und sein Ersatz muss in Eile beginnen. Und ich wünschte, das letzte wäre ein theoretisches Beispiel, aber es passierte tatsächlich an einem Startup, mit dem ich mit war. RIP.

    Nun, realistisch, können Sie nicht wirklich in allen Abhängigkeiten einchecken. Sie können kein Bild der Maschine überprüfen, die Sie zum Erstellen von Builds verwendet haben. Sie können die genaue Version des Compilers nicht überprüfen. Und so weiter. Es gibt realistische Grenzen. Aber überprüfen Sie in allem, was Sie können - lässt Ihr Leben nicht nur härter sein. Und das wollen wir nicht.

    Final Word: Pods werden keine Artefakte aufbauen. Build Artefakte werden von Ihren Builds generiert. Ihr Build verwendet Pods, die sie nicht generieren. Ich bin nicht einmal sicher, warum das diskutiert werden muss.

In der Theorie sollten Sie das Verzeichnis PODS einchecken.In der Praxis wird es nicht immer funktionieren.Viele Pods übertreffen die Größenlimit von Github-Dateien, wenn Sie GitHub verwenden, wenn Sie GitHub verwenden, werden Sie Probleme in dem Verzeichnis Pods überprüfen.

Vorteile von nicht Einchecken Pods/ zur Versionskontrolle (in subjektiver Reihenfolge der Wichtigkeit):

  1. Viel einfacheres Zusammenführen von Commits und Überprüfen von Codeunterschieden.Das Zusammenführen ist eine häufige Ursache für Probleme in einer Codebasis, sodass Sie sich nur auf relevante Dinge konzentrieren können.
  2. Es ist für einen zufälligen Mitwirkenden unmöglich, die Abhängigkeiten selbst zu bearbeiten und die Änderungen einzuchecken, was er niemals tun sollte (und wiederum schwer zu identifizieren wäre, wenn der Unterschied groß ist).Das Bearbeiten von Abhängigkeiten ist eine sehr schlechte Praxis, da sie eine Zukunft hat pod install könnte die Änderungen verdecken.
  3. Abweichungen zwischen den Podfile und das Pods/ Verzeichnis werden von Teamkollegen schneller gefunden.Wenn Sie einchecken Pods/ und zum Beispiel eine Version im aktualisieren Podfile, aber vergiss zu rennen pod install oder checken Sie die Änderungen ein Pods/, wird es Ihnen viel schwerer fallen, die Ursache der Diskrepanz zu erkennen.Wenn Pods/ nicht eingecheckt ist, müssen Sie es immer ausführen pod install Trotzdem.
  4. Kleinere Repo-Größe.Ein kleinerer Byte-Fußabdruck ist schön, aber im Großen und Ganzen spielt das keine große Rolle.Wichtiger:Wenn Sie mehr Dinge im Repo haben, erhöht sich auch Ihre kognitive Belastung.Es gibt keinen Grund, Dinge im Repo zu haben, die Sie sich nicht ansehen sollten.Sehen Sie sich die Dokumentation (die Abstraktion) an, um zu erfahren, wie etwas funktioniert, nicht den Code (die Implementierung).
  5. Es lässt sich leichter erkennen, wie viel jemand beiträgt (da seine Codezeilen keine Abhängigkeiten enthalten, die er nicht geschrieben hat).
  6. JAR Dateien, .venv/ (virtuelle Umgebungen) und node_modules/ werden niemals in die Versionskontrolle einbezogen.Wenn wir dieser Frage völlig agnostisch gegenüberstehen würden, nicht Einchecken Pods wäre die Standardeinstellung basierend auf Präzedenzfällen.

Nachteile von nicht Einchecken Pods/

  1. Du musst rennen pod install beim Wechseln von Zweigen oder beim Zurücksetzen von Commits.
  2. Sie können ein Projekt nicht einfach durch Klonen des Repositorys ausführen.Sie müssen das Pod-Tool installieren und dann ausführen pod install.
  3. Zum Ausführen benötigen Sie eine Internetverbindung pod install, und die Quelle der Pods muss verfügbar sein.
  4. Wenn der Besitzer einer Abhängigkeit sein Paket entfernt, sind Sie in Schwierigkeiten.

In Summe, Nicht beinhaltet Die Pods Verzeichnis ist eine Leitplanke gegen weitere schlechte Praktiken. Einschließlich Die Pods Verzeichnis erleichtert die Ausführung des Projekts.Ich bevorzuge Ersteres gegenüber Letzterem.Sie müssen nicht jede neue Person in einem Projekt darüber besprechen, „was?“ nicht „was zu tun ist“, wenn die Möglichkeit, bestimmte Fehler zu machen, gar nicht erst besteht.Mir gefällt auch die Idee einer separaten Versionskontrolle für Pods was die Nachteile lindert.

scheint ein guter Weg, um zu strukturieren, das wäre wirklich, das Verzeichnis "Pods" als Git-Submodul / separates Projekt zu haben, hier warum.

  • mit PODs in Ihrem Projekt-Repo, wenn Sie mit mehreren Entwicklern arbeiten, können Sie sehr große Differenz in Pull-Anforderungen verursachen, in denen es fast unmöglich ist, die eigentliche Arbeit zu sehen, die von den Menschen geändert wurde (denken, dass mehrere Hunderte bis Tausende von Dateien geändert wurdenfür Bibliotheken und nur wenige im eigentlichen Projekt geändert).

  • Ich sehe das Problem, das nicht etwas zu begangen, da die der Bibliothek, die die Bibliothek besitzt, jederzeit abnehmen kann, und Sie löst auch das.

Ob Sie in Ihrem Pods-Ordner einchecken oder nicht, erfolgt an Ihnen, da Workflows von Projekt zum Projekt variieren. Wir empfehlen, dass Sie das Pods-Verzeichnis unter der Quellsteuerung aufbewahren, und fügen Sie es nicht Ihrem Gitignore hinzu. Aber letztendlich liegt diese Entscheidung an Ihnen:

Vorteile der Überprüfung des PODS-Verzeichnisses

    .
  1. Nachdem Sie den Repo klonieren, kann das Projekt sofort bauen und ausgeführt werden, selbst ohne Kakaapoden auf der Maschine installiert zu sein. Es ist nicht erforderlich, die POD-Installation auszuführen, und es ist keine Internetverbindung erforderlich.
  2. Die Pod-Artefakte (Code / Bibliotheken) sind immer verfügbar, auch wenn die Quelle einer Pod (z. B. Github) nach unten gehen würde.
  3. Die Pod-Artefakte sind garantiert mit denen in der ursprünglichen Installation identisch, nachdem sie den Repo geklappt haben.

    Vorteile des Ignorierens des Pods-Verzeichnisses

      .
    1. Die Quellsteuerungs-Repo ist kleiner und nimmt weniger Platz auf. Solange die Quellen (z. B. Github) für alle Hülsen verfügbar sind, können CocoapoDs im Allgemeinen dieselbe Installation neu erstellen. (Technisch gibt es keine Garantie, dass die Laufen der POD-Installation identische Artefakte abhebt und neu erstellt wird, wenn keine Commit-SHA in der Podfile verwendet wird . Dies gilt insbesondere bei der Verwendung von ZIP-Dateien in der PodFile.)
    2. Es gibt keine Konflikte, um sich beim Durchführen von Source Control-Vorgängen zu befassen, z. B. das Zusammenführen von Zweigen mit unterschiedlichen Pod-Versionen. Egal, ob Sie das PODS-Verzeichnis, das PODFILE und PODFILE.LOCK, überprüfen, immer unter Versionskontrolle aufbewahrt werden.

TL;DR:wenn Sie das verfolgen Pods/ Ordner, das Projekt ist leichter abzuholen.Wenn Sie es nicht verfolgen, ist es einfacher, sich zu verbessern, wenn Sie in einem Team arbeiten.

Obwohl die Cocoapods-Organisation uns ermutigt, dies zu verfolgen Pods/ Verzeichnis, sagen sie, es sei Sache der Entwickler, anhand dieser Vor- und Nachteile zu entscheiden, ob sie es tun oder nicht:http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control

Persönlich verfolge ich normalerweise das Pods/ Ordner nur für Projekte, an denen ich eine Weile nicht mehr arbeiten werde.Auf diese Weise kann jeder Entwickler schnell damit anfangen und die Arbeit mit der richtigen Version der Cocoapods fortsetzen.

Andererseits denke ich, dass der Commit-Verlauf übersichtlicher wird und es einfacher ist, den Code zusammenzuführen und den Code einer anderen Person zu überprüfen, wenn Sie ihn nicht verfolgen Pods/ Ordner.Normalerweise lege ich die Version der Cocoapod-Bibliothek fest, wenn ich sie installiere, um sicherzustellen, dass jeder das Projekt mit denselben Versionen wie ich installieren kann.

Auch wenn die Pods/ Das Verzeichnis wird verfolgt. Alle Entwickler müssen dieselbe Version von Cocoapods verwenden, um zu verhindern, dass bei jeder Ausführung Dutzende Dateien geändert werden pod install um einen Pod hinzuzufügen/zu entfernen.

Endeffekt:wenn Sie das verfolgen Pods/ Ordner ist das Projekt einfacher zu entnehmen.Wenn Sie es nicht verfolgen, ist es einfacher, es zu verbessern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top