Effiziente Methode, um einen neuen Patch aus einigen der aktuellen Änderungen vorzunehmen

StackOverflow https://stackoverflow.com/questions/8816811

  •  27-10-2019
  •  | 
  •  

Frage

Ich benutze ziemlich viel Quecurial -Warteschlangen und ich bin wirklich zufrieden mit ihnen, aber es gibt einen Workflow, den ich übermäßig kompliziert finde. Es passiert manchmal, dass ich an einem Patch arbeite, und dann habe ich festgestellt, dass ich an etwas gearbeitet habe, das sich in einem separaten Patch befinden sollte dass ich tatsächlich in einem separaten Patch haben möchte).

Der Zustand ist also für das Arbeitsverzeichnis beträgt: Patches A, B, C angewendet, plus Änderungen, die in Patch C eingebaut werden sollten, und Änderungen, die in einem neuen Patch D.

Mein aktueller Workflow dafür ist wie folgt:

hg qnew D.patch files-for-patch-D..
hg qnew temp.patch # changes for patch C
hg qpop
hg qpop
# Now I'm on patch C
hg qfold temp.patch # Integrate changes into patch C
# Here I could have patch errors.. 
hg qpush

Ich weiß, ich könnte es auch so machen

hg qrefresh files-for-patch-C..
hg qnew -m "..." new-feature.patch 

Der Nachteil bei diesem Ansatz ist, dass die Anzahl der Dateien für Patch C normalerweise groß ist und es unangenehm ist, alle auf die Befehlszeile zu setzen. Die Anzahl der Dateien für Patch D ist normalerweise im Vergleich klein.

Gibt es eine bessere Möglichkeit, dies zu erreichen als das, was ich oben beschrieben habe?

War es hilfreich?

Lösung

Ich denke, Sie haben die typischsten Ansätze für dieses Problem behandelt - ich bin auch von Zeit zu Zeit darauf getroffen. Eine alternative Lösung, die ich kenne, ist zu tun

$ hg qrefresh -X files-for-patch-D
$ hg qnew D.patch

Das ist: ausschließen Die wenigen Dateien, die Sie für Patch D geändert haben, anstatt es zu versuchen enthalten Alle richtigen Dateien für Patch C.

Sie können auch zwangsweise Pop Patch D (mit hg qpop -f) Anstatt Ihre Änderungen in einen temporären Patch zu verstauen. Dies funktioniert nur, wenn sich die von Patch D berührten Dateien nicht mit den Änderungen in der Arbeitskopie überschneiden, dh wenn Sie nicht verwendet haben qrecord von dem Aufzeichnungserweiterung Patch D. erstellen D.

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