2009-03-13 5 views
4

Ich verwende ein Git-Repository für alles, was mit einer Website zusammenhängt, die ich gerade entwickle. Das Repository enthält alle Dateien, die sich auf die Site beziehen, einschließlich Dokumentation, Mockups, originale geschichtete Bilder usw. sowie die Web-Root-Dateien, die ich in ein www-Unterverzeichnis gestellt habe.Verwenden von Git, was ist die beste Möglichkeit, ein externes Projekt mit Submodulen unterzugruppieren?

ich an dem Punkt bin, wo ich das CMS gestartet werden soll Integration habe ich gewählt mit dem Rest des Projektes zu verwenden; Das CMS ist ein Open-Source-Projekt, das auch mit Git verwaltet wird (und auf GitHub gehostet wird, falls das wichtig ist). Offensichtlich muss das CMS im www Unterverzeichnis sein, aber es wird nicht das einzige, was da drin sein - there'll CSS-Dateien sein, Bilder, Vorlagen für das CMS, etc., etc. Aus diesem Grunde, ich habe ausgewählt, um die Teilbaum-Merge-Strategie zu verwenden, um das externe Projekt meinem Repository hinzuzufügen. Da ich irgendwann das ursprüngliche Projekt ändern und Änderungen zurückgeben möchte, habe ich das CMS-Repository von GitHub geklont und die Unterbaum-Zusammenführung von meinem Klon durchgeführt.

Das Problem ist, das externe Projekt (das heißt für das CMS) hat Submodule, die ich will aufzunehmen. Wie lassen sich die Submodule am besten in das Hauptprojekt integrieren? Muss ich für jedes Submodul eine Teilbaumzusammenführung durchführen?

Ich bin wahrscheinlich nicht die Submodule ändern wollen, aber es ist möglich, dass es eine oder zwei sein würde, ich würde.

Antwort

2

Git submodules enthalten eine bestimmte Kasse eines anderen Projekts, und werden nicht automatisch aktuell gehalten. Die einfachste Möglichkeit, die Submodule Ihres CMS zu verwalten, besteht daher darin, die Repos zu verfolgen, von denen sie als entfernte Zweigstellen stammen. So können Sie über Änderungen an den Projekten, aus denen die Submodule stammen, auf dem Laufenden gehalten werden.

Die Verwendung der Teilbaum-Zusammenführung macht es komplizierter (vielleicht finicky ist das richtige Wort), um Änderungen zurück an das CMS-Projekt zu senden; Vielleicht könnte es geschrieben werden, wenn Sie viele Änderungen zurückgeben möchten.

+0

Dank, scheint es wie subtree merge der Weg zu gehen ist; Ich fusioniere aus einer geklonten Version des Repositorys, so dass alle Änderungen am ursprünglichen Projekt dort gemacht werden würden, was es einfach macht, etwas zurückzuzahlen. Aber wie gehe ich mit den Submodulen des CMS Repo um? Muss ich jede Untereinheit rekursiv zusammenführen? – Calrion

+0

Sie haben Recht, Subtree Merge ist der Weg zu gehen. Sie müssen jedes der Untermodule unterteilen. Sie könnten die Submodule in den Klon bringen, bevor Sie sie in Ihr Projekt einbinden, aber das würde bei der zukünftigen Aktualisierung mehr Arbeit bringen. Beißen Sie das Aufzählungszeichen und fügen Sie Teilbaum für jedes Sub hinzu. – Paul

+0

Hört sich gut an, danke. Aber ich habe gerade ein Problem entdeckt ... die Tags wurden (natürlich) aus dem CMS-Repository importiert. Ich werde Konflikte haben. Das derzeitige Denken besteht lediglich darin, Dateien zu importieren und den CMS-Verlauf zu ignorieren. – Calrion

5

Eine einfachere Möglichkeit, Teilbaumverschmelzungen durchzuführen (und die anschließende Aufteilung wieder zurück, so dass Sie Patches upstream einreichen können), ist das experimentelle Tool git subtree.

Verwandte Themen