Możesz to zrobić z submodułami w git. W repozytorium, wykonaj następujące czynności:
git submodule add path_to_repo path_where_you_want_it
Tak więc, jeśli repozytorium Biblioteki miał URL git://github.com/example/some_lib.git
i chciał go na lib/some_lib
w projekcie, można wpisać:
git submodule add git://github.com/example/some_lib.git lib/some_lib
Zauważ, że to musi do zrobienia z katalogu najwyższego poziomu w twoim repozytorium. Więc nie rób tego w katalogu, w którym umieszczasz go jako pierwszy.
Po dodaniu submodule, lub gdy ktoś robi świeże kasę swojego repozytorium, trzeba zrobić:
git submodule init
git submodule update
a następnie wszystkie Submoduły dodanych zostanie wyrejestrowany w taki sam Twoja rewizja.
Kiedy chcesz zaktualizować do nowszej wersji jednej z bibliotek, cd
do modułem i pociągnąć:
cd lib/some_lib
git pull
Wtedy, kiedy wykonujesz git status
powinieneś zobaczyć lib/somelib
wymienione w zmodyfikowanej sekcji. Dodaj ten plik, zatwierdz i jesteś na bieżąco. Gdy współpracownik ściąga ten commit do swojego repozytorium, będzie widział zmianę w postaci lib/somelib
, dopóki ponownie nie uruchomi się git submodule update
.
Dzięki za odpowiedź, wznowione! (i prawdopodobnie przyjmie to jutro) Czy istnieje sposób na dodanie tylko jednego pliku z drugiego repo jako zależności? Czy musi to być cały folder? –
Jeśli chcesz śledzić go jako submoduł (a co za tym idzie, łatwo pobierać aktualizacje), musisz pobrać całe repozytorium. W przeciwieństwie do wielu innych VCS, git naprawdę chce tylko radzić sobie z repozytorium najwyższego poziomu. – Emily
[przeczytaj to] (https://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/), aby dowiedzieć się, do czego moduł jest odpowiedni i jakie sposoby obejść. potencjalne problemy. i [dyskusja na ten temat] (https://news.ycombinator.com/item?id=3904932). – minghua