Si llevo un tiempo borrando el código y olvidé crear una serie de parches sobre la marcha, ¿cómo creo la serie de parches de forma retroactiva? Hasta ahora, lo único que viene a la mente es:¿Cómo divido el trabajo en varios parches con colas mercuriales?
# 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
...
Este enfoque muy engorroso también es peligroso. Puede que olvide el -k
en qdelete
, momento en el que golpearé mi frente contra una pared de ladrillo durante varios minutos, o podría incluir demasiado o muy poco durante la operación de grabación.
¿Hay una manera mejor?
(Lo que realmente me gustaría es poder hg qpop
justo antes de un parche que quiero dividir, y utilizar un comando actualmente inexistente, hg qunrecord
, para absorber de forma interactiva los cambios del parche en mi directorio de trabajo Una vez que estoy contento con los cambios, hg qnew -f
podría apretar un nuevo parche frente al anterior.)
¿Se trata de dividir en diferentes parches por archivo? Es decir. los cambios para un archivo dado no se dividen en varios parches. Porque si es así, uno puede hacerlo mejor que el enfoque que describió anteriormente. Esta es una vieja pregunta, pero aún relevante. –
@FaheemMitha: Cambié a Git hace bastante tiempo, por lo que no es particularmente relevante para mí.Pero para el registro, ciertamente quiero diferenciar los cambios dentro de los archivos, especialmente los archivos de proyectos de alto nivel que a menudo contienen adiciones/eliminaciones de archivos no relacionados. De hecho, esto es casi la norma más que la excepción. –
Ok. Gracias por los comentarios, Marcelo. –