Frage

Wenn git Submodule verwenden, was ist die bevorzugte Art und Weise Anpassungen zu tun? Soll ich ...

  • das Projekt Gabel und die Gabel verfolgen
  • Versuch, das Standardverhalten außer Kraft zu setzen
  • machen die Änderungen lokal

Wenn keine dieser Sinn macht, dann macht was?

War es hilfreich?

Lösung

Ich bin mir nicht ganz sicher, ob Ihre Frage impliziert, dass alle Projekte, die Sie bereits git Projekte enthalten sein sollen oder wenn sie zur Zeit SVN, Mercurial, nicht-Version gesteuert. Falls das letzte ist, müsste es ein Fall-zu-Fall-Antwort sein.

Wahrscheinlich die Projekte, die Sie aufnehmen möchten, und passen Sie sind bereits auf, sagen wir, Github und dann sollten Sie auf jeden Fall Gabel durch Github und diese Gabeln als Submodule verwenden. Jede Anpassung soll geprüft werden und geschoben Github.

Es könnte schwieriger sein, wenn die Projekte, die Sie woanders aufnehmen möchten (oder basieren auf SVN, Mercurial, etc.). Eine Möglichkeit ist es, die Projekte vor Ort gabeln und dann eingerichtet Cron-Jobs eingehende Änderungen an Github zu schieben. Das heißt, schaffen Github Spiegel. Um in die totale Kontrolle sowohl der Zusammenführung und Aktualisierung Sie können diese Spiegel Gabel haben und diese Gabeln als Submodule in einem Projekt gehören, in lokale Anpassungen überprüft und an die Gabel des Spiegels drücken.

Alternative # 3, Gabel Projekte und tun lokale Check-In nur in Situationen verwendet werden könnte, in denen Sie nicht die oben genannten Optionen haben und etwas Sie schaffen sollen, nicht wirklich leicht verteilt werden.

Monkey Patching (Alternative # 2 auf Ihrer Liste) soll eine Alternative zu Situationen, an denen Sie auf Ihnen abhängig werden nicht ein Projekt wollen eine maßgeschneiderte Gabel auf dem neuesten Stand mit Upstream-Änderungen zu halten.

Andere Tipps

Ich finde Forking Subprojekte git Submodul mit extrem ermüdend sein, weshalb ich schrieb git subtree statt.

Die Idee der git Teilstruktur ist, dass Sie Import der Inhalt des Teilprojekts in das eigene Projekt, so verzweigen Sie alles auf einmal und neue Commits machen wie Sie wollen. Dann, wenn Sie bereit sind (wenn überhaupt), können Sie git subtree split verwenden das Teilprojekt der Geschichte zu extrahieren und legt ihn im Upstream.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top