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:
Schritte:
Löschenpackages/router/.git/
bearbeitenpackages/.gitignore
und entfernen Sie die "Router" -LeitungEntfernen Sie den Router von Ihremsmart.json
hinzufü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-RepositoryNachteile:
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 übernehmenBetrachten 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 hinzuWeitere 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 übernommenNachteile:
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 benutzenSchritte:
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 BereitstellungsumgebungenNachteile:
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 zeigenVorteile:
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.