2013-02-28 14 views
11

Nasz proces git jest okresowym łączeniem się z naszą główną gałęzią, aby zmiany mogły zostać połączone z naszymi gałęziami najnowszych funkcji. Od czasu ostatnich rund fuzji z jednej gałęzi do drugiej, natrafiamy na problem, w którym rozwiązanie nie jest jasne.Dlaczego błędy commits nie są zgodne z błędem merge-base?

Mamy repozytorium, które zawiera 19 submodułów. Podczas łączenia wszystkich submodułów widzimy, co uważamy za oczekiwany wynik, mówiąc nam, że pliki są modyfikowane, konflikty itp. Następnie, gdy dojdziemy do scalenia repozytorium "root", wszystko idzie na południe i widzimy z następujących danych wyjściowych (edytowane w celu wskazania tylko problemów).

warning: Failed to merge submodule projects/foo1 (commits don't follow merge-base) 
warning: Failed to merge submodule projects/foo2 (commits don't follow merge-base) 
warning: Failed to merge submodule projects/foo3 (not fast-forward) 

Found a possible merge resolution for the submodule: 
931a61165f3b2079523a122477fa5f44c123406d: Comment of last merge 

If this is correct simply add it to the index for example by using: 

git update-index --cacheinfo 160000 931a61165f3b2079523a122477fa5f44c123406d "projects/foo3" 

which will accept this suggestion. 

Teraz możemy uruchomić sugerowane polecenie git update-index. To sprawi, że git będzie zadowolony z tego jednego submodułu, ale nigdy wcześniej nie musieliśmy tego uruchamiać. Problem jest naprawdę zły, patrząc na submoduły foo1 i foo2, w których nie wyświetla się pomoc.

+0

Dla każdej modyfikacji submodułów, czy również zatwierdziłeś i wcisnąłeś repozytorium macierzyste? – VonC

+0

Przed scaleniem oba drzewa są w pełni funkcjonalne bez żadnego problemu z brakiem zatwierdzenia w dowolnym module. Czy o to Ci chodziło? – Peter

+0

Mam na myśli to, że kiedy modyfikujesz moduł częściowy, musisz zatwierdzić i nacisnąć, a następnie przejść do rodzica, zatwierdzić i nacisnąć również (ponieważ zmieniony został SHA1 modułu podrzędnego). Zastanawiam się, czy wykonałeś jakąkolwiek modyfikację tych submodułów (a jeśli tak, czy wykonałeś sekwencję zatwierdzania wypychania), przed próbą scalenia repozytorium nadrzędnego. – VonC

Odpowiedz

0

W komentarzu mufo OP poniżej jego pytanie znika:

Dla tych przeglądanie do tego postu, a nie byłem w 100% pewien, co się stało, uważam, że to ze względu na użytkowników, którzy ręcznie usunął GIT_MERGE pliki z ich repozytorium root i pchane. Poprzez ręczne łączenie każdego submodule, pchanie zmiany, a następnie w modułem głównym systemem

git commit -i -m "blah" . 

zrobił nam wydają się rozwiązać ten problem. Git nigdy nie twierdził, że musimy popełnić w module podstawowym, ale wydaje się, że musieliśmy. Następne połączenia do tej pory wydają się działać poprawnie.

Powiązane problemy