Pracuję nad projektem open source na GitHub.
Ma podkatalog / Vendor, w którym ma kopię kilku bibliotek zewnętrznych. Oryginalny opiekun projektu aktualizował ten katalog raz na jakiś czas nowszą kopią biblioteki zewnętrznej.
Jeden deweloper wysłać do mnie prośbę ciągnącego się pomysł, aby zastąpić tę kopię przez git modułem .
Zastanawiam się, czy to dobry pomysł, czy nie.
Zalety podmodułu Git:
- Submoduły zostały zaprojektowane specjalnie dla podobnych scenariuszy
- Usuwa możliwość przypadkowego zatwierdzenia dostawcy, który zostanie zastąpiony podczas następnej aktualizacji
Wady podmodułu Git:
- Wygląda na to, że podmoduły git przekazują złożoność od opiekuna do osoby, która sklonuje / pociągnie projekt (po sklonowaniu wymagane są dodatkowe kroki w celu rozpoczęcia pracy z projektem: „git submodule init”, „git submodule update”
Jakie jest twoje zdanie na ten temat?
Jeszcze jedna rzecz. Ten problem to stosunkowo niewielka biblioteka z bardzo ograniczonymi zewnętrznymi zależnościami. Myślę, że każde narzędzie do budowania byłoby na razie nadmierne.
git clone --recursive
a następnie nie muszą wykonywać poleceń submodułu. Nikt inny nie wspominał o tym smakołyku; większość osób, które znam, mają podmoduły, reklamują to w README.Odpowiedzi:
Alternatywą dla submodułu jest użycie
git subtree
. Daje to korzyści,git submodule
ale bez przesuwania złożoności do użytkownika końcowego. Repozytorium innej firmy jest scalone z głównym drzewem projektu, ale metadane są przechowywane w taki sposób, że można:Dla użytkowników Git, którzy nie są wystarczająco zaawansowani, aby zrozumieć submoduły, podejście do poddrzewa sprawia, że uzyskanie klona projektu nie jest trudniejsze niż jakikolwiek inny klon. Krótka notka z dokumentacji:
Założyłem projekt w pracy przy użyciu submodułów, a kłopoty z utrzymywaniem aktualności submodułów w klonach wszystkich były zbyt pracochłonne. Niedawno zmieniłem na używanie poddrzewa wszędzie i te problemy zniknęły.
Zauważ, że git-subtree jest częścią
git/contrib
katalogu i musi być zainstalowany osobno.źródło
Jedną wadą korzystania z podmodułów jest to, że archiwa tar lub zip-archiwa w Github (i wielu innych usługach) nie zawierają źródeł podmodułów. Oznacza to, że archiwa nie są samodzielne. Jest to problem, jeśli repozytorium jest małe i tak naprawdę nie ma skryptu kompilacji, takiego jak statyczna witryna HTML w zależności od biblioteki JavaScript.
źródło
Jest to idealne miejsce do korzystania z submodułów. Zmniejszają rozmiar i złożoność repozytorium oraz ułatwiają aktualizację bibliotek zewnętrznych do nowej wersji.
Nie są trudne do zrozumienia, jak używać, i są dość powszechnie stosowane w tej sytuacji, więc po prostu zanotuj w README projektu, że korzystasz z submodułów i co robić, a ludzie powinni być w stanie wymyślić to się skończyło. Gdy po raz pierwszy zetknąłem się z repozytorium z podmodułem, uruchomiłem je w ciągu 10–15 minut i nigdy nie miałem problemu z ustaleniem, co robić dalej.
źródło
Korzystanie z podmodułów uniemożliwia dokonywanie lokalnych zmian w kodzie i tworzy zależność od zewnętrznego repozytorium. Jeśli masz pewność, że nigdy nie będziesz chciał dostosowywać biblioteki ani wprowadzać lokalnych poprawek, i możesz mieć pewność, że zewnętrzny serwer będzie zawsze dostępny, gdy będziesz chciał sklonować nową kopię, jest to dobra droga.
W skrócie - czy chcesz po prostu korzystać z bibliotek lib, czy uważasz, że są one częścią twojej bazy kodu? Jeśli nie są to „twoje” kody, to dlaczego mają kontrolę wersji, a nie tylko coś, co trzeba zainstalować?
źródło