modo efficiente per fare una nuova patch da alcuni dei cambiamenti in corso
-
27-10-2019 - |
Domanda
Sto usando le code mercuriali molto spesso, e sono davvero contento di loro, ma c'è un flusso di lavoro che trovo troppo complicato. Succede a volte che sto lavorando su una patch, e poi ho rendo conto che ho lavorato su qualcosa che dovrebbe essere in un patch separata (come quando ho corretto un bug che ho trovato durante il lavoro su una caratteristica o aggiunto un altro elemento per che io in realtà voglio avere in una patch separata).
Quindi, lo stato è per la directory di lavoro è: patch A, B, C applicati, più modifiche che dovrebbero essere messi in cerotto C e modifiche che dovrebbe essere in una nuova patch D.
Il mio attuale del flusso di lavoro per questo è la seguente:
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
So che potrei anche fare in questo modo
hg qrefresh files-for-patch-C..
hg qnew -m "..." new-feature.patch
Lo svantaggio di questo approccio è che il numero di file per cerotto C è di solito di grandi dimensioni, ed è imbarazzante dover mettere tutti sulla linea di comando. Il numero di file per cerotto D è di solito piccolo in confronto.
C'è un modo migliore per ottenere questo risultato di quello che ho delineato sopra?
Soluzione
Credo di aver coperto il maggior numero di approcci tipici a questo problema - Ho anche eseguire in esso di volta in volta. Una soluzione alternativa che conosco è quello di fare
$ hg qrefresh -X files-for-patch-D
$ hg qnew D.patch
Questo è il seguente:. escludere i pochi file che hai modificato per patch di D, invece di cercare di sono tutti i file giusti per cerotto C
E 'possibile anche la forza pop patch di D (con hg qpop -f
) invece di stashing le modifiche in una patch temporanea. Questo funziona solo se i file toccati dalla patch di D non si intersecano con i cambiamenti nella copia di lavoro, vale a dire, quando si dispone di qrecord
non utilizzato dal record di estensione per creare patch di D.