Czy mogę zagnieżdżać repozytoria Git? Mam:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
Czy jest sens, aby aby ułatwić zarządzanie wszystkim lokalnie czy muszę zarządzać , a jedna ze stron 3-ty osobno?git init/add
/project_root
my_project
Umieść biblioteki stron trzecich w oddzielnym repozytorium i użyj podmodułów, aby powiązać je z głównym projektem. Oto przewodnik:
http://git-scm.com/book/en/Git-Tools-Submodules
Decydując, jak podzielić segment repo, zwykle decydowałem na podstawie tego, jak często je modyfikowałem. Jeśli jest to biblioteka innej firmy i tylko zmiany, które wprowadzasz, aktualizują się do nowszej wersji, zdecydowanie powinieneś oddzielić ją od głównego projektu.
źródło
Dla kompletności:
Jest jeszcze jedno rozwiązanie, polecam: scalanie poddrzewa .
W przeciwieństwie do podmodułów łatwiej jest utrzymać. Każde repozytorium utworzyłbyś w normalny sposób. Będąc w głównym repozytorium, chcesz scalić wzorzec (lub inną gałąź) innego repozytorium w katalogu głównego katalogu.
Następnie, aby przeciągnąć inne repozytorium do katalogu (w celu jego aktualizacji), użyj strategii scalania poddrzewa:
Używam tej metody od lat, działa :-)
Więcej informacji na temat tego sposobu, w tym porównania z modułami podrzędnymi, można znaleźć w tym dokumencie git howto .
źródło
Możesz dodać
do
co powinno zapobiec włączeniu zagnieżdżonego repozytorium do repozytorium nadrzędnego i można z nimi pracować niezależnie.
Ale: jeśli użytkownik uruchomi git clean -dfx w repozytorium nadrzędnym, usunie zignorowane zagnieżdżone repozytorium. Innym sposobem jest dowiązanie symboliczne do folderu i zignorowanie dowiązania symbolicznego. Jeśli następnie uruchomisz git clean, dowiązanie symboliczne zostanie usunięte, ale repozytorium „zagnieżdżone” pozostanie nienaruszone, ponieważ naprawdę znajduje się w innym miejscu.
źródło
git-subtree pomoże ci pracować z wieloma projektami w jednym drzewie i zachować dla nich odrębną historię.
źródło
Podsumowanie.
Tak. Jednak domyślnie git nie śledzi
.git
folderu zagnieżdżonego repozytorium. Git ma funkcje zaprojektowane do zarządzania zagnieżdżonymi repozytoriami (czytaj dalej).Prawdopodobnie nie ma to sensu, ponieważ git ma funkcje zarządzania zagnieżdżonymi repozytoriami. Wbudowane funkcje Git do zarządzania zagnieżdżonymi repozytoriami to
submodule
isubtree
.Oto blog na ten temat, a tutaj jest SO pytanie, które obejmuje zalety i wady korzystania z każdego z nich.
źródło
Użyłbym jednego repozytorium na projekt. W ten sposób przeglądanie historii staje się łatwiejsze.
Sprawdziłbym również wersję używanej przeze mnie biblioteki stron trzecich w repozytorium używającego ją projektu.
źródło