Wie kann ein bestehendes Meteoritenpaket auf saubere Art und Weise gegabelt werden?

Ich versuche herauszufinden, wie ein bestehendes Paket für Atmosphere innerhalb eines Projekts am besten / saubersten gegabelt werden kann. Es gab einige Fälle, in denen ein vorhandenes Paket geändert werden musste und ich gezwungen war, es zu teilen.

Soweit ich das beurteilen kann, gibt es folgende Möglichkeiten. Leider haben alle ihre eigenen Probleme und ich muss noch die perfekte Lösung finden. ich werde benützenmeteor-router als Beispiel:

1. Kopieren Sie einfach die Paketdateien in Ihren Paketordner

Schritte:

Löschenpackages/router/.git/bearbeitenpackages/.gitignore und entfernen Sie die "Router" -LeitungEntfernen Sie den Router von Ihremsmart.jsonhinzufügenpackages/router in Ihr Projekt-Repository kopieren und festschreibenNehmen Sie jetzt Änderungen vor (auf diese Weise ist Ihr erstes Commit eine saubere Version und Sie können selbst herausfinden, was Sie geändert haben).

Vorteile:

leicht zu erreichen und zu verstehenDer gesamte Code, auf den Sie sich verlassen, befindet sich in Ihrem Projekt-Repository

Nachteile:

Sie verlieren den gesamten ursprünglichen Repository-VerlaufEin Update auf eine neuere Version ist schwierigEs ist schwierig, Ihre Änderungen wieder in das ursprüngliche Projekt zu übernehmen

Betrachten Sie dies nicht einmal für die einfachsten Pakete!

2. Gabel auf Github, dann ...

Um ein Paket auf Github zu verteilen, können Sie Ihr überprüfensmart.lock Datei, um zu sehen, welches Repository verwendet wird. Gehen Sie zur Github-Seite dieses Repositorys und geben Sie sie ein.

Als nächstes haben Sie drei Möglichkeiten:

2a. Fügen Sie es als Git-Modul hinzu

Weitere Informationen zu Git-Submodulen:http://git-scm.com/book/en/Git-Tools-Submodules

Schritte:

Siehe den obigen Link zum Initialisieren / Erstellen / Aktualisieren eines SubmodulsEntfernen Sie das Paket von Ihremsmart.json

Vorteile:

Submodulversionen sind mit Ihrem Projekt verbundenÄnderungen werden sofort übernommen

Nachteile:

Alle Entwickler müssen ausgeführt werdengit submodule init das erste mal undupdate aktualisierenSie müssen sich der Probleme mit Submodulen bewusst sein, wenn Sie den Checkout bearbeitenInformieren Sie sich über andere Probleme mit Submodulen2b. Bearbeiten Sie Ihre Projektesmart.json um deine Version zu benutzen

Schritte:

In deinersmart.json, finden"router": {} und hinzufügen"git": "https://github.com/USER/meteor-router.git" in der leeren{}.Fügen Sie optional a hinzu"branch" oder"tag".

Vorteile:

Sie können Meteorite weiterhin zum Verwalten Ihrer externen Pakete verwendenFunktioniert automatisch für andere Entwickler und in Bereitstellungsumgebungen

Nachteile:

Der Code in Ihrem Paketordner kann nicht bearbeitet werden, da es sich nicht um ein Git-Repository handeltMeteorite wird nicht jedes Mal, wenn Sie es ausführen, automatisch auf die neueste Version aktualisiert

(Vorgeschlagene Meteoriten-Verbesserung: Ermöglichen Sie die Installation von Paketen in einer bearbeitbaren Form, wie Pythons Pip die Verwendung des Parameters '-e' ermöglicht.)

2c. Klonen Sie außerhalb Ihres Projekts und fügen Sie ein"path" zusmart.json

Schritte:

Klonen Sie das Paket an einen Ort außerhalb Ihres ProjektsÄhnlich wie bei 2b fügen Sie a hinzu"path" zu deinemsmart.json um Meteorite auf Ihre lokale Kasse zu zeigen

Vorteile:

Sie können das Paket nach Belieben bearbeiten und Meteor übernimmt die Änderungen automatisch.

Nachteile:

Wenn du das begehstsmart.json, Sie werden höchstwahrscheinlich alle anderen Entwicklungs- / Bereitstellungsumgebungen unterbrechen ...

Welche Methode verwenden Sie? Wie umgehen Sie die Nachteile dieser Methode?

Ich könnte einige Probleme mit diesen Lösungen verpasst haben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage