Frage

Wir verwenden Git, um unser Projekt zu verwalten.

Jedes Projekt verfügt über einen "Kern" (wie ein Rahmen, von dem wir das Projekt erstellt haben). Jedes Projekt hat also mindestens 2 entfernte Zweige:

  • 1 Repository für dieses Kernrahmen.
  • 1 Repository pro Client -Projekt.

Wir haben auch Module. Jedes Modul verfügt über einen Kern, der die grundlegende Funktionsfunktion enthält, und wir personalisieren jedes Modul von dieser Basis für jeden Client.

  • Wir haben also Submodule, die in jedem Kundenprojekt enthalten sind
  • Aber ich kann nicht herausfinden, wie ich mit dem Teil der Personalisierung der Submodules umgehen soll.

Wie kann Git mir helfen, wenn ich einige neue Dateien in einem Submodul hinzufügen möchte, das nur in 1 bestimmtem Client -Projekt verwendet werden muss?

Da die Dateien für das Hauptprojekt personalisiert werden, wäre es am besten, einige Dateien zu begehen, die im Submodul in der Client -Projektzweige enthalten sind, aber es sieht so aus, als ob ich nicht kann, da jedes Submodul unabhängig ist.

PS.: Wir verwenden SmartGit.

War es hilfreich?

Lösung

Dies ist ein Szenario, in dem Sie Git-Subtree verwenden können (Zusammenführung)

Wenn Sie Änderungen an dem anderen Projekt in Ihrem Repository vorgenommen haben, möchten diese möglicherweise von Ihrem Projekt zusammengeführt werden. Dies ist mit Subtree möglich - es kann die Wege in Ihrem Baum hochverändern und dann nur die relevanten Teile Ihres Baumes verschmelzen.

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

Die Idee der Subbree -Zusammenführung ist, dass Sie zwei Projekte haben und eines der Projekte ein Unterverzeichnis des anderen und umgekehrt auf ein Unterverzeichnis befreit. Wenn Sie einen Subbree -Zusammenschluss angeben, ist Git klug genug, um herauszufinden, dass einer ein Subtree des anderen ist und angemessen zusammengeführt wird - es ist ziemlich erstaunlich.

http://progit.org/book/ch6-7.html

Aber ich nehme an, Sie möchten Submodule verwenden und sich nicht davon entfernen.

Andere Tipps

Ich kann nicht, da jedes Submodul unabhängig ist.

Während es wahr ist, dass ein Submodul "unabhängig" ist, da es als einzelne Repository über seine eigenen Commits und Zweige verfügt, können Sie immer noch eine Client-Project-Filiale auf dieser Submodule definieren.

Dieser Zweig würde in Ihrem Haupt-Client-Project-Repo sowie im Kernsubmodul definiert, um Änderungen für ein in beiden Repos durchgeführter Clientprojekt zu isolieren.
Wenn Sie diese Änderungen in den Kern-Submodulen zurückschieben, drücken Sie sie in einen Client-Project-Zweig, dessen Name mit dem Namen der Client-Zweigstelle übereinstimmt, die in Ihrem Client-Eltern-Repo verwendet wird.

Kurz gesagt, eine Namenskonvention kann Ihnen helfen, kleine spezifische Änderungen in einem Kernsubmodul zu isolieren, das von vielen Client-Project-Repos verwendet und geteilt wird.

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