Frage

Wie würden Sie verwenden Mercurial für das folgende Problem.

Angenommen, ich eine Bibliothek Kern haben. Ich möchte jetzt eine Erweiterung dieser Bibliothek namens Erweiterung entwickeln. Ich mag physisch Kern halten, getrennt von Erweiterung, das heißt sie sagen, dass Kern eine Open-Source-Bibliothek ist und Extension ist eine private Bibliothek, die auf Core-Builds (vielleicht enthält es einige Sachen, die ich persönlich halten will. Wie auch immer.). Offensichtlich will ich nicht immer die ganze Quelle in Erweiterung des öffentlichen Repository schieben. Aber auf der anderen Seite könnte ich bestimmte Änderungen von Extension-Core schieben will (wenn ich entscheiden würde, zu „spenden“ Teil der Erweiterung des Core) oder umgekehrt (wenn ich will, Bug-Fixes zu übernehmen, sagen).

Wie würden Sie vorgehen, um das Risiko zu minimieren Erweiterung Kern undichten (einmal die Geschichte an die Öffentlichkeit Server geschoben wird, gibt es kein Zurück mehr!), Während flexibel bleibt diese für bestimmte Änderungen zu tun. Geäst? Klone? Mqs? Etwas anderes?

Ich bin derzeit nur vertraut mit dem Klonen Repositories, und sehr ähnlich wie seine Einfachheit.

EDIT: Ich kam mit dieser Regelung, aber ich kann nicht ganz bekommen es unter Windows zu arbeiten. Zwei Repositories (Core und Extension). In Verlängerung gibt es zwei Zweige , auch Kern und Erweiterung. Jetzt können Sie pro Repository einen Haken in Mercurial registrieren, so möchte ich einen 'pretxnchangegroup' Haken in dem Core-Repo registrieren, die checkins aus der Extension Zweig nicht zulässt, als eine Art erklärt im Mercurial Buch . Außer, dass ich nicht ganz, dass bekommen unter Windows zu arbeiten. Also:

  • jemand ein Beispiel für so etwas wie diesen hat (in der Tat, jeder Haken, der das Ergebnis einer transacion ändert) unter Windows?
  • Ich würde noch in der Lage seiner Transplantation zu verwenden, um Änderungen von der Erweiterung der Kernbranche cherrypick, nicht wahr?
War es hilfreich?

Lösung

Nach einigen Tests, ich werde diese Regelung versuchen. Zwei Haupt Repositorys und zwei benannte Zweige, Kern und Erweiterung.

Ein Haupt Core-Repository, das nur Core-Changesets und Quelle enthalten sollte. Es sollte daher nur Differenzmengen aus dem Kern Zweig enthält. Dies wird überprüft den folgenden Repository-Haken in hgrc dieser Repo mit:

pretxnchangegroup.branch = hg heads --template "current branches: {branches} " | find "Extension" && exit 1 || exit 0

Sieht ein wenig seltsam, aber im Grunde wird es entlassen, nachdem ein Push oder Pull abgeschlossen ist, aber bevor sie festgeschrieben wird. An diesem Punkt, wenn der Haken ausfällt, wird die Transaktion zurückgerollt. So ist der Haken sucht nach einem changeset des Extension-Zweig und schlägt fehl, wenn er sie findet -. Effektiv Verlängerung Änderungen zum Verbot des Core-Repo eingeben

Der zweite Repo enthält sowohl Kern- und Erweiterungs Zweige und Changesets und ist, wo Differenzmengen zwischen den beiden Zweigen ausgetauscht bekommen. Normaldruck aus Core-Verlängerung, und Transplantation von Extension-Core.

Hoffnung hilft dies jemand anderes.

Andere Tipps

  

(einmal die Geschichte gedrückt wird, gibt es   kein Zurück mehr!)

Sie sicher, dass ... das ist, was die Versionskontrolle geht!

Ich habe nicht so etwas wie dies früher getan, aber es klingt wie die Transplantation Befehl wird hilfreich sein. Außerdem können Sie Klone von Klonen haben, und drücken Sie auf einen von ihnen, und so weiter.

Die Wald Erweiterung mehr repos im Rahmen halten kann eines großen. Klingt wie das hier helfen könnte.

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