Es gibt keine gut Weg zu Kirsche Pick Revisionen in mercurial (das ist, was der vorgeschlagene Workflow genannt wird). Es gibt einige nicht so gute Möglichkeiten: Export + Import (oder der Convenience Wrapper um den Export + Import, der Transplant genannt wird), aber der Nachteil ist, dass Sie den gleichen Changeset mit verschiedenen Hashes in mehreren Repositories haben, ohne dass es gut ist Möglichkeit, das darzustellen, wenn/wenn Sie versuchen, Änderungen erneut zu verschieben.
Besser ist es, Ihren Workflow so zu modifizieren, dass Sie alle Vorfahren überarbeiten können, indem Sie bewusst die Vorfahren eines Changesets auswählen.
Zum Beispiel, wenn Sie einen Fehler beheben, der im Entwicklungsrepository ist, und alle drei "anderen" Repositorys ändern nicht nur die übergeordnete Revision der Änderung tip
des Entwicklungsrepositorys. Zuerst machen Sie eine hg update -r THE_REVISION_WHERE_THE_BUG_WAS_ADDED
, dann beheben Sie Ihren Fehler, und dann commit. Sie erhalten eine Nachricht mit der Nachricht new head created
, die erwartet wird.
Jetzt hatten Sie dieses Update als Changesets, deren einziges Elternteil das Changeset ist, in dem der Bug eingeführt wurde - das muss in den 3 anderen Repositories existieren oder sie würden den Bug nicht haben. So, jetzt können Sie pull
diese neue Änderung in die "3" anderen Repositories, ohne alles andere in Entwicklung mit ihnen zu bringen. Und dann machst du einen schnellen hg merge
in jedem dieser vier Repositories, die den Bugfix in ihren deploybaren tip
mischen.
Die Handhabung von Repositories mit gemeinsamen Funktionen, aber Anpassungen in jedem, kann ein wenig schwierig sein, aber wenn Sie die Dinge richtig strukturieren, können Sie alle Ihre Intra-Repo-Migrationen mit Push, Pull und Merge durchführen , und muss nie einen Fehler zweimal beheben, denselben Code in verschiedenen Änderungssätzen haben oder die Anpassung eines Repositorys erneut durchführen.
Als eine Anmerkung, der Halbierung Befehl, eine große Arbeit der Beantwortung der Frage "Wo wurde dieser Fehler eingeführt", bevor man beginnt, es zu beheben.
Dies ist fast geben mir was ich will außer, dass, wenn ein Konflikt auftritt, ich diese .rej-Dateien anstelle von mir ein Merge-Tool. Kennen Sie einen einfachen Weg, diese .rej-Dateien zu verarbeiten, statt sie manuell zu analysieren und Konflikte zu lösen? – mdonovan2010
Für neuere Leser, die das Problem lösen möchten: Siehe meine aktualisierte Antwort unten für eine integrierte, gut funktionierende Lösung. – Lstor