Se ho sfornato il codice per un po 'e ho dimenticato di creare una serie di patch mentre procedo, come posso creare la serie di patch in modo retrospettivo? Finora l'unica cosa che viene in mente è:Come dividere il lavoro in più patch con code mercuriali?
# Prepare and test the first batch of changes.
$ hg qrecord -m 'first batch' 1.patch
$ hg qnew -m 'stash downstream changes' stash-1.patch
$ hg qdelete -k temp-1.patch
$ make hello
cc hello.c -o hello
hello.c: In function ‘main’:
hello.c:4: error: syntax error at end of input
make: *** [hello] Error 1
$ echo '}' >> hello.c
$ make hello
cc hello.c -o hello
$ hg qrefresh
# Recover the stashed changes.
$ patch -p1 < .hg/patches/last.patch
# And around we go again!
$ hg qrecord -m 'second batch' 2.patch
$ hg qnew -m 'stash downstream changes' stash-2.patch
$ hg qdelete -k stash-2.patch
$ make hello
...
Questo approccio molto macchinoso è anche pericoloso. Potrei dimenticare lo -k
su qdelete
, a quel punto andrò a colpire la fronte contro un muro di mattoni per diversi minuti, o potrei includere troppo o troppo poco durante l'operazione qrecord.
C'è un modo migliore?
(Quello che mi piacerebbe davvero essere in grado di hg qpop
a poco prima di una patch che voglio dividere, e utilizzare un comando attualmente inesistente, hg qunrecord
, per aspirare in modo interattivo le modifiche dalla patch nella mia directory di lavoro Una volta che sono soddisfatto delle modifiche, hg qnew -f
potrebbe spremere una nuova patch di fronte a quella precedente.)
Questa domanda è la suddivisione in diverse patch per file? Vale a dire. le modifiche per un determinato file non vengono suddivise tra più patch. Perché se così fosse, si può fare meglio dell'approccio che hai descritto sopra. Questa è una vecchia domanda, ma ancora pertinente. –
@FaheemMitha: Sono passato a git un po 'di tempo fa, quindi non è particolarmente rilevante per me.Ma per la cronaca, io sicuramente voglio differenziare le modifiche all'interno dei file, specialmente i file di progetto di livello superiore che spesso contengono più aggiunte/cancellazioni di file non correlate. In realtà, questa è quasi la norma piuttosto che l'eccezione. –
Ok. Grazie per il feedback, Marcelo. –