Mam kilka pracujących drzew z pewnymi zależnościami. AFAIK, git modułem wymusi następujące:Git submodule alternatywa?
- mieć kopię każdego drzewa roboczego (Slave) w podkatalogu każdym drzewie roboczym używając go (master)
- repozytorium mistrz powiela wszystkie informacje z niewolników
Nie mam nic przeciwko tym, że repo robi się większe, ale posiadanie kopii jest dla mnie nie do przyjęcia. Zmusiłoby mnie to do reorganizacji wszystkich projektów, aby kopia była połączona. Co więcej, edycja niewłaściwego pliku może łatwo doprowadzić do zamieszania.
Mam inny pomysł:
- Each sklepów mistrzowskie listę wszystkich swoich niewolników.
- Nie są wymagane żadne inne informacje w systemie głównym.
- Przy każdym zatwierdzeniu w master, tworzone jest "snapshot-commit" w slave.
- "Migawka-zatwierdzenie" jest migawką bieżącego stanu roboczego drzewa, ignoruje bieżący stan indeksu (używam już "migawki-zatwierdzenia" przed odrzuceniem niektórych niezamówionych zmian).
- "Migawka-zatwierdzenia" zbiera się w oddziale, którego nazwa pochodzi od imienia i nazwiska głównego. Komunikat zatwierdzenia zawiera wartość mieszania głównego zatwierdzenia. (IMHO, to jest lepsze niż zalanie tysiącami tagów.)
- Kasa działa jak zwykle, chyba że wymagana jest rekursja na niewolników.
Jedyny problem widzę są następujące:
- W commity w niewolników będzie gromadzić i nigdy nie zostaną usunięte, nawet jeśli pan popełnia już nie istnieją.
- Zobowiązania w systemie głównym nie zawierają się samodzielnie, można usunąć zatwierdzenie skierowane w systemie głównym. Ale nie widzę żadnej szansy, żeby to mogło się stać przypadkiem, więc mogę z tym żyć.
- Nie mogę sobie wyobrazić, w jaki sposób inne polecenia git mogłyby to poprzeć. Ale znowu mogę z tym żyć.
Pytam, czy ktoś już to zaimplementował (lub jeśli to zły pomysł).
Czy masz na myśli, że myliłem się z moim zdaniem "repozytorium master duplikuje wszystkie informacje od niewolników" ? Jest to całkiem możliwe, ale moim głównym zmartwieniem jest istnienie kopii każdego drzewa podrzędnego w każdym drzewie głównym (czy też znowu się mylę?). – maaartinus
@maaartinus: istnieje kopia fizyczna (ponieważ kasuje pewną różnicę), ale cały repo nadrzędny zachowuje referencję do zatwierdzonego zatwierdzenia. Zobacz "prawdziwy charakter submodułów" tutaj: http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC
@maaartinus: Prawdą jest jednak, że każde nadrzędne zwierzenie repo będzie kasować submoduł, co oznacza w danym czasie będzie istnieć kilka kopii tego submodułu. – VonC