Jak rozwidlić istniejący pakiet meteorytu w czysty sposób?

Próbuję znaleźć najlepszy / najczystszy sposób na rozwidlenie istniejącego pakietu w Atmosphere w ramach projektu. Spotkałem się z kilkoma przypadkami, gdy istniejący pakiet wymagał pewnych modyfikacji i musiałem go rozwidlić.

O ile wiem, istnieją następujące opcje. Niestety, wszystkie z nich mają swoje własne problemy i jeszcze nie znalazłem idealnego rozwiązania. Użyjęmeteor-router jako przykład:

1. Po prostu skopiuj pliki pakietów do folderu pakietów

Kroki:

usunąćpackages/router/.git/edytowaćpackages/.gitignore i usuń linię „router”usuń router z twojegosmart.jsonDodajpackages/router do repozytorium projektu i zatwierdźteraz dokonuj zmian (w ten sposób twoje początkowe zatwierdzenie jest czystą wersją i możesz sam określić, co sam zmieniłeś)

Zalety:

łatwe do osiągnięcia i zrozumieniacały kod, na którym polegasz, można znaleźć w repozytorium projektu

Niedogodności:

tracisz całą historię oryginalnych repozytoriówtrudno jest zaktualizować do nowszej wersjiciężko jest wprowadzić zmiany z powrotem do oryginalnego projektu

Nie rozważaj tego nawet w przypadku najprostszych pakietów!

2. Rozwidlaj github, a następnie ...

Aby rozwidlić pakiet na githubie, możesz sprawdzić swójsmart.lock plik, aby zobaczyć, które repozytorium jest używane. Przejdź do strony github tego repozytorium i rozłóż ją.

Następnie masz trzy opcje:

2a. Dodaj go jako podmoduł git

Więcej informacji na temat submodułów git:http://git-scm.com/book/en/Git-Tools-Submodules

Kroki:

Zobacz link powyżej o tym, jak inicjować / tworzyć / aktualizować submodułUsuń paczkę z twojegosmart.json

Zalety:

Wersje submodułów są połączone z twoim projektemZmiany są natychmiast podnoszone

Niedogodności:

Wszyscy programiści muszą działaćgit submodule init po raz pierwszy iupdate aktualizowaćPodczas edycji kasy musisz być świadomy problemów z submodułamiPrzeczytaj o innych problemach z submodułami2b. Edytuj swój projektsmart.json użyć swojej wersji

Kroki:

W Twoimsmart.json, odnaleźć"router": {} i dodaj"git": "https://github.com/USER/meteor-router.git" wewnątrz pustego{}.Opcjonalnie dodaj a"branch" lub"tag".

Zalety:

Nadal możesz używać Meteorite do zarządzania zewnętrznymi pakietamiBędzie działać automatycznie dla innych programistów i środowisk wdrażania

Niedogodności:

Kod w folderze pakietów nie jest edytowalny, ponieważ nie jest repozytorium gitMeteoryt nie będzie automatycznie aktualizowany do najnowszej wersji za każdym razem, gdy go uruchomisz

(Sugerowana poprawa meteorytu: zezwól na instalowanie pakietów w edytowalnej formie, tak jak pip Pythona pozwala na użycie parametru '-e')

2c. Klonuj poza swoim projektem i dodaj"path" dosmart.json

Kroki:

Sklonuj pakiet do miejsca poza projektemPodobny do 2b, dodaj a"path" dla Twojejsmart.json wskazać meteoryt na lokalną kasę

Zalety:

Możesz dowolnie edytować pakiet, a Meteor automatycznie odbierze zmiany.

Niedogodności:

Jeśli to zrobiszsmart.json, najprawdopodobniej złamiesz wszystkie inne środowiska programistyczne / wdrożeniowe ...

Jakiej metody używasz? Jak radzisz sobie z wadami tej metody?

Mogłem przegapić pewne problemy z tymi rozwiązaniami.

questionAnswers(4)

yourAnswerToTheQuestion