, Wie kann ich push/pull ein einzelner Satz von änderungen zwischen repositories in Mercurial?
Ich habe die folgende situation:
- Ich habe Eine Website, die es in sich hat das Mercurial-repo-und wir entwickeln es für eine Weile. Lassen Sie uns sagen, Ein hat 5 Revisionen.
- Wir nun zum erstellen von Site B, die nahezu identisch ist mit Standort A, außer für die grafische Gestaltung, die meist. Also ich geklonte repo, Schritte B-site, und jetzt B ' s repo hat alle Eine Geschichte, sowie eine Menge von änderungen, die sollten nie gehen zurück zu Einem (meist CSS und Bilder). Lassen Sie uns sagen, dass diese änderungen nahm mir 3 Revisionen.
- Endlich, ich habe jetzt eine änderung vorgenommen zu B, dass, würde ich mag, um zurück zu A, weil es gehört auf beiden Seiten. Dies ist revision 9 in B ' s repo.
Die Frage ist: Wie kann ich bewegen, revision 9 von B ' s repo in das repo, ohne auch bewegen Revisionen 6-8?
- Ich habe versucht, regelmäßige schieben/ziehen, aber das verschiebt alle änderungen.
- Ich habe versucht exportierenden bundles oder patches, aber diejenigen, die sich weigern zu importieren, die in Einem wegen der fehlenden Elternteil.
Ich dachte, einer von den Schönheiten der DVCS war, dass ich tun konnte, diese Art der Sache einfach (was in der "zentrale" VCS Welt, die ich beheben könnte leicht mit Zweigen und Zusammenführungen, ich habe es getan mit Vault eine Menge und es ist ziemlich leicht).
Bin ich hier etwas fehlt?
HINWEIS: ich schaute in die "MQ", aber dass scheint zu sein, eine große Dose Würmer, und es sieht aus wie es eine Wirkung auf die regelmäßige commit-Zyklus nur für als aktiviert. Ist das richtig?
Jede Hilfe oder Hinweise werden sehr geschätzt. Danke!
Daniel
InformationsquelleAutor Daniel Magliola | 2010-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
https://www.mercurial-scm.org/wiki/wiki/TransplantExtension
Finden Sie unter "Verwenden der Transplantation zu cherrypick eine Reihe von änderungen":
Idealerweise tun Sie dies mit Zweigen obwohl?
Ich war darauf hindeutet, dass Sie über zwei Niederlassungen in den einzelnen Ordnern (insgesamt drei). Eine mit dem gemeinsamen begeht und mit den commits, die gehen nie in die andere repo. Sie verschmelzen in der gemeinsamen Zweig mit der bestimmten Zweigen, wenn Sie es brauchen 🙂 Für eine Erklärung der Mercurial Zweige: mercurial.selenic.com/wiki/Branch#Creating_a_Branch wenn Sie weitere Fragen haben, Fragen 🙂
Ah, interessant. Ich werde Experimentieren. Vielen Dank für die Idee!
Siehe auch Steve Losh ausgezeichneten Hg Verzweigung Erklärung bei stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial
Mit getrennten Zweigen für Ihre Grafik-änderungen und Ihre gemeinsame begeht, bedeutet, dass weder der Satz von änderungen hat die anderen Vorfahren, und so können Sie zu geschoben/gezogen unabhängig voneinander.
InformationsquelleAutor ikanobori
Denke ich an die Befehle auf diese Weise:
hg bundle
bietet Ihnen eine binary-version ein änderungssatz-undhg unbundle
wird, schaltet sich das bundle in genau der gleichen änderungssatz auf der empfangenden Seite.Bündeln und Entbündeln Wissenstransfer änderungsmengen anzuzeigen, die über, sagen wir, E-Mail und binary patch hängt von der übergeordneten änderungen vorhanden sein..
hg export
gibt Sie einen text-Darstellung ein changeset, und es sei denn, Sie verwenden die--exact
command line flag zuhg import
, dann wird dieser patch nicht zu erstellen, die genaue gleichen änderungssatz auf der empfangenden Seite.Den Vorteil, nicht mit
--exact
genau, die Sie anwenden können, so ein patch überall, solange gibt es keine inhaltlichen Konflikte.hg transplant
ist nur ein dünner wrapper umhg export
undhg import
.InformationsquelleAutor Martin Geisler
Wenn Sie jemals wollen, "fold" oder überspringen Sie die Geschichte in einem mercurial-repo, die Sie einfach aktualisieren, um die base-revision (vor dem Abschnitt, den Sie möchten, um Falten). Wenn Sie möchten, Falten Sie alles über die in einem einzigen änderungssatz (dies scheint zu sein, was Sie wollen), brauchen Sie nur wiederherstellen auf die Leiter, branch und commit (oder verpflichten nur die Dateien, die Sie wollen). So erstellen Sie einen neuen änderungssatz mit den Sachen, die Sie wollen, so können Sie schieben Sie diese auf Ihre Website A. Die Sachen, die Sie nicht wollen, Sie einfach ignorieren (oder entfernen Sie es, wenn Sie können es nicht ignorieren).
Wenn Sie mehrere änderungen über Ihre Falten, die Sie behalten möchten, sollten Sie Stellungswechsel. Aktivieren Sie die Stellungswechsel Erweiterung und rebase #9 auf #5. Wenn es irgendwelche Kinder #9, diese wird verschoben. Rebase ist vorzuziehen, zu verpflanzen (was macht eine ähnliche Sache), da rebase verwendet 3-Wege-merge-Maschinen zu migrieren, änderungen, macht es wahrscheinlicher, erfolgreich zu sein. Transplantation ist mehr oder weniger nur ein dummer, export-import, so ignoriert es die gemeinsame Geschichte.
InformationsquelleAutor bryancole