Frage

Ich habe gerade um Thema zu schaffen Zweige für mein Projekt unvollendeter Funktionen, verwaltet von Git. Sie sind alle sehr eigenständig in einer solchen Art und Weise, dass ein Thema Zweig direkt zu einem anderen Thema Zweig bezieht sich nicht. Alle Branchen haben jedoch einen gemeinsamen Nenner, der Master-Zweig, der das Kernstück des Systems ist, erstrecken sich die Themen Zweige nur die Eigenschaften in der Master-Zweig.

Wenn ich habe richtig verstanden, wenn ich etwas in dem Master-Zweig tun, die (m) ein beliebigen Thema Zweige betreffen (zum Beispiel der API verwendeten verändern zwischen dem Kern und den einzelnen Funktionen zu kommunizieren), dass Veränderungen propagieren nicht zu das Thema Zweige automatisch, so dass die Zweige entsprechend festgesetzt werden könnten. Die Änderungen würden manuell zusammengefügt oder Kirsche gepflückt in den anderen Zweigen werden müssen.

Ich verstehe, dass Submodule mit diesem erreichen würde. Die Submodule führen jedoch zu viel Trennung zwischen dem Hauptprojekt und die Feature-Projekte Möchtegern-, vor allem weil die Eigenschaften, die nicht selbsttragend sind. Sie berufen sich auf den Kern.

Also, was ich suche, ist eine Art von Methode zu sagen, dass bestimmte Dateien / Verzeichnisse sind einzigartig für einen bestimmten Zweig, alles andere kommt von einem Hauptzweig. In Ermangelung eine bessere Analogie, Sprechen in Photoshop Begriffen, ich will Master die Background-Schicht zu sein, und jedes Thema Zweig würde eine teilweise transparente Bildschicht oben drauf sein, mit einigem einzigartigen Inhalt.

War es hilfreich?

Lösung

Das Begriff „Zusammensetzung“ oder „Vererbung der Konfiguration“ nicht in Git unterstützt wird, wie in der Frage erklärt „ Flexible vs statische Verzweigung ". Nur erlauben verschmilzt Sie die genaue Menge von Dateien „zu komponieren“ Sie wollen.

Die Submodul-Funktion helfen Ihnen ein kohärentes Bündel von Datei zu identifizieren, die einen eigenen Lebenszyklus haben muss und in seinem eigenen Tempo markiert werden. Das ist nicht der Fall Ihrer Funktionen.

Ihr Ansatz sollte bleiben ein „ systembasierte “ ein, wo Sie entwickeln, Tag und das ganze System zusammenführen. Wenn etwas auf dem Master-Zweig entwickelt, muss sie auf den Feature-Filialen verschmelzen.
Wenn die Merkmale einen anderen Satz von Dateien beinhalten, die die, die in dem Master-Zweig modifiziert wird, dass merge trivial sein. Wenn nicht, können Sie Mateusza Vorschlag folgen, mit einem Zwischen Zweig die Konflikte zu lösen und das Ergebnis einer solchen Zusammenführung bewerten, während die Funktionszweig unangetastet zu halten.

Andere Tipps

Nehmen wir an Sie haben Zweig Master und Haufen von Zweigen: feature1, feature2, Feature3 ...

$ git checkout feature1
$ git branch master-with-feature1
$ git checkout master-with-feature1
$ git merge master

Jedes Mal, wenn Sie Änderungen vornehmen zu Master oder feature1 Sie Prüfung können Master-with-feature1 und sie zusammenführen.

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