Potrzebuję czegoś podobnego do submodułów, ale które istnieją poza głównym repozytorium jako zależność.Jak dodać repozytorium git jako współdzieloną zależność innego repozytorium git?
Oto problem:
Próbuję użyć Git (w bardzo niewygodnej sposób) do zarządzania plikami projektu dla narzędzia CAD (CadSoft Eagle) i mam problemy ze zorientowaniem jeśli istnieje sposób użycia podmodułów git do zarządzania zależnością każdego projektu od udostępnionej biblioteki narzędzia CAD.
Używam strukturę folderów tak:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
Proj1/
.git/
<design files>
W tym przypadku, to nie ma sensu, aby dodać repozytorium eagle.git jako modułem git dla każdego projektu.
Jednak nadal potrzebuję sposobu, aby zignorować bieżący stan repozytorium "eagle.git", tak aby biblioteka była aktualizowana w przyszłości, może być wycofana, aby uzyskać dostęp do konkretnej wersji plików biblioteki, która były używane, gdy Proj [x] został popełniony.
Idealnie, chciałbym coś jak następuje:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
**eagle** <-- something that acts like a submodule
but which actually points to ~/eagle/
Proj1/
.git/
<design files>
**eagle** <-- something that acts like a submodule
but which actually points to ~/eagle/
Chciałbym umieć:
cd ~/projects/Proj0
git submodule update
i mieć ~/Eagle/katalog automatycznie przywrócić weryfikacja została sprawdzona w Proj0.
Ktoś wie o wszystkim w Git, który mógłby pozwolić na takie zachowanie?
Czy możesz wyjaśnić, dlaczego submodules nie będzie działał tutaj? Brzmi dla mnie jak submoduły są dokładnie tym, czego potrzebujesz. –
Aby narzędzie CAD (Eagle) mogło "zobaczyć" bibliotekę, należy ją dodać do ustawień ścieżki Eagle. Gdybym dodał repozytorium biblioteki "orzeł" jako moduł podmoduł dla każdego projektu, musiałbym ręcznie dołączyć do każdego modułu projektu moduł ścieżki ścieżki Eagle, co spowodowałoby pojawienie się [x] kopii biblioteki "Eagle" w Eagle's menedżer biblioteki. Ustalenie, co jest czym, i zarządzanie tymi oddzielnymi kopiami w narzędziu CAD byłoby koszmarem. Ponadto biblioteka może być o rząd wielkości większa niż pliki projektu, więc wydaje się naprawdę nieekonomiczna, aby mieć [x] jej kopie znajdujące się na dysku. – cdwilson
Pomocny sposób myślenia o tym jest przez analogię. Powiedzmy, że narzędzie Eagle CAD to fabryka, która może tworzyć jeden widget na raz. Powiedzmy, że każdy projekt [x] .git repo jest reprezentowany przez projekt fabryczny [x] dla jakiegoś widżetu [x] produkowanego przez fabrykę. Regeneracja eagle.git jest reprezentowana przez ustawienia fabryczne (maszyny, pracownicy, surowce) wymagane do utworzenia tego widgetu [x]. – cdwilson