2013-02-28 3 views
11

Unser Prozess für Git ist eine periodische Zusammenführung zu unserem Master-Zweig, so dass die Änderungen wieder auf unsere neuesten Features Zweige zusammengeführt werden können. Seit den letzten Runden der Verschmelzung von einem Zweig zum anderen stoßen wir auf ein Problem, bei dem die Lösung nicht klar ist.Warum folgen Commits nicht dem Merge-Base-Fehler?

Wir haben ein Repository mit 19 Submodulen. Wenn wir alle Submodule verschmelzen, sehen wir, was wir für die erwartete Ausgabe halten, die uns Dateien, die verändert werden, mitteilt. Wenn wir dann zum Zusammenführen des "Root" -Repositorys kommen, geht alles nach Süden und wir sehen etwas der folgenden Ausgabe (bearbeitet, um nur auf die Probleme hinzuweisen).

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. 

Jetzt können wir den vorgeschlagenen git update-index Befehl ausführen. Es wird Git für dieses eine Submodul glücklich machen, aber wir mussten das nie zuvor tun. Das Problem ist sehr schlecht, wenn man sich die Submodule foo1 und foo2 anschaut, in denen keine Hilfe angezeigt wird.

+0

Haben Sie für jede Änderung der Submodule auch das Parent-Repo festgeschrieben und gedrückt? – VonC

+0

Vor dem Zusammenführen sind beide Bäume vollständig funktionsfähig, ohne dass in einem Submodul ein verpasstes Commit aufgetreten ist. Meinst Du das? – Peter

+0

Ich meine, dass, wenn Sie ein Submodul ändern, müssen Sie Commit und Push, dann gehen Sie zum Eltern, Commit und Push auch (weil der SHA1 des Submoduls geändert hat). Ich habe mich gefragt, ob Sie irgendwelche Änderungen an diesen Submodulen vorgenommen haben (und wenn ja, wenn Sie der Commit-Push-Sequenz gefolgt sind), bevor Sie versuchen, das Parent-Repo zusammenzuführen. – VonC

Antwort

0

Bei Kommentar des OP unter seine Frage verschwindet:

Für diejenigen, Surfen auf diesen Beitrag, während ich nicht 100% sicher war, was passiert ist, ich glaube, es war wegen eines Benutzers, der die GIT_MERGE manuell entfernt Dateien aus ihrem Root-Repository und geschoben. Durch manuelles jedes Submodul verschmelzenden, die Änderungen drängen und dann im Stamm Submodul läuft

git commit -i -m "blah" . 

haben scheinen wir das Problem zu beheben. Git hat nie behauptet, dass wir uns im Root-Submodul engagieren müssten, aber es scheint, als müssten wir es tun. Nachfolgende Zusammenführungen scheinen bisher korrekt zu funktionieren.

Verwandte Themen