2012-11-06 13 views
5

Mam projekt składający się z biblioteką i różnych zastosowań:Funkcję submodule git z rodzeństwem?

foo/ 
foolib/ 
bar/ 
baz/ 
qux/foo/ 

Wszystkie aplikacje połączyć przeciwko foolib, statycznej biblioteki.

Chciałbym git commit na foo nagrać identyfikator SHA1 gdzie foolib był na, a także git statusu na foo zgłosić, jeśli istnieją niezatwierdzone zmiany w foolib.

Jednak nie chcę przenosić foolib na posiadanie jego kopii jako podkatalogu każdej aplikacji. Oprócz tego, że jest on rozdęty, straciłoby to możliwość wypróbowania pewnych zmian w wielu aplikacjach bez konieczności wprowadzania zmian.

Próbowałem zrobić plik .gitmodules, który wskazuje na ../foolib, ale wydaje się być całkowicie ignorowane przez git status. Próbowałem również zrobić foolib softlink wewnątrz git wydawało się traktować softlink jako plik zamiast podążać za linkiem.

Czy jest to coś, co chcę, czy masz alternatywne rozwiązania w zakresie obiegu dokumentów?

W moim publicznym repozytorium struktura jest taka sama, a każda aplikacja (i foolib) została sklonowana indywidualnie od publiczności.

Odpowiedz

1

Pomysł byłoby stworzenie inny repo fooProject, które zadeklarować jako submodules:

  • foo
  • foolib

(Jeśli zadzwonisz projektu nadrzędnego appProjects zamiast z fooProject, możesz zadeklarować jako submoduły wszystkie podkatalogi: foo, foolib, bar, baz ...)

Jeżeli którykolwiek z podkatalogów (foo lub foolib) zmian i sprawia, że ​​nowy commit, można wrócić do macierzystego repo i zobowiązać, jak również, w celu zapisz SHA1 różnych submodułów.

Powiązane problemy