Frage

Wir haben bisher viele Submodule in unsere Repositories, aber die Wartbarkeit unserer Projekte steigern wir einen experimentellen Zweig begonnen, wo wir sie alle mit Teilbäume ersetzt.

Das funktionierte gut -. Aber jetzt, wenn ich versuche, eine der Teilbäume zu aktualisieren es verschmilzt fälschlicherweise das Update in ein völlig falsches Verzeichnis, das nicht einmal ein Teilbaum

Das Haupt Repository, in dem der Zweig "Teilbaum" den experimentellen Zweig enthält, ist: git: //github.com/hugowetterberg/goodold_drupal.git

Das Repository fusionieren in Updates von: git: //github.com/voxpelli/drupal-oembed.git

Merging by doing: git merge es subtree oEmbed / Master

Der Weg der Updates sollten in zusammengefügt werden: sites / all / modules / oEmbed /

Der Weg, den sie verschmolzen werden in: Module / Aggregator / Übersetzungen /

Wer eine Vorstellung davon hat, wie den Updates in die Unterstrukturen zu bekommen oder was kann der Fehler sein?

War es hilfreich?

Lösung

Das ist leider ein Fehler (oder fehlende Funktion) in dem "git merge es subtree" Code. Es eigentlich Vermutungen die Teilbäume, die Sie zusammenführen möchten. Normalerweise ist diese magische Weise erweist sich als richtig, aber wenn Ihr Unterbaum eine Menge Änderungen enthält (oder war ursprünglich leer, oder was auch immer), dann kann es nicht spektakulär.

Der beste Weg, um es zu arbeiten, ist:

  1. Führen Sie die Dateien, wie Sie oben haben.

  2. manuell verschieben Sie alle resultierenden Dateien, wo sie sollte sind gegangen.

  3. git commit -a --amend die Zusammenführung verpflichten zu korrigieren.

Future verschmilzt wahrscheinlich gut funktionieren, es sei denn, dieses Verzeichnis ständig in unglaublichen Mengen an Fluss ist.

Der experimentelle " git subtree " Befehl einen --prefix Parameter hat, dass Sie dies außer Kraft setzen lassen soll, aber leider ist es zur Zeit nicht arbeiten (da es Arbeit erfordert um „git merge es subtree“ -Funktionen und es ist nicht Zeit, es zu tun).

Wie auch immer, dies ist eine seltene Situation sein sollte, und die Abhilfe nicht auch für zukünftigen verschmilzt des gleichen Projektes benötigt werden.

Andere Tipps

git Version 1.7.9.5

git pull -s subtree <remote name> <remote branch>

(merge ging in das falsche Verzeichnis)

git reset --hard HEAD^
git pull -s subtree -Xsubtree=correct/directory <remote name> <remote branch>

Beachten Sie, dass es keinen Schrägstrich auf dem Verzeichnis

Danke apenwarr

scroll top