Pregunta ¿Qué hacer cuando tiene demasiados cambios en un solo parche en un hg mq la cola de parches?


El propósito del plugin hg mq es poder hacer commits perfectos para su repositorio, sin confundir los cambios que hizo en su distraído TDAH inducido divagando a través de su código;

Por ejemplo....

Estoy trabajando en el error x cuando noto el error y empiezo a trabajar en él. En este punto, se supone que debe crear un nuevo parche en la cola de parches para no confundir los cambios cuando sea hg qfinish comprometido con su repositorio.

Ahora supongamos por un minuto que te olvidas de hacer el nuevo parche y en el proceso hg qrefresh. Luego, luego de darse cuenta de su error, desea separar los cambios de ese parche en dos parches.

Me doy cuenta de que tiene que ver con la edición de su archivo de parche (y un nuevo archivo de parche) en la cola para separar los cambios en parches separados y confirmaciones posteriores. Sin embargo, aún no soy experto en la edición de los archivos de parche de diff.

¿Dónde puedo aprender sobre esto? ¿Y cómo podría uno hacer esto?


5
2018-03-24 13:32


origen


Respuestas:


Otra opción (suponiendo que se ejecute en su plataforma) es la versión 2.0 de TortoiseHG. La utilidad 'inapropiada' llamada Shelve permite el movimiento de fragmentos y archivos entre parches, o en el directorio de trabajo. Está disponible para Windows, Linux y posiblemente OSX.

http://tortoisehg.bitbucket.io/


3
2018-03-24 17:24



Como se señala en este pregunta relacionada SO, revisar la "Dividir un parche en múltiples parches"sección del tutorial de MQ.


2
2018-03-24 17:21



Puedes activar el extensión de registro, agregando a .hgrc las siguientes líneas:

[extensions]
hgext.record =

Puede borrar su parche actual con

hg qrefresh nothing

(note que el "nothing"es sólo una cadena aleatoria: los argumentos para qrefresh es la lista de archivos que deben incluirse en el parche actual, por lo que cualquier cosa que no sea el nombre de un archivo modificado servirá - generalmente uso "0")

Ahora con hg qrecord <patchName> puede elegir de forma interactiva qué cambios deben ir en el nuevo parche. Los cambios restantes se pueden agregar a otro parche con qnew u otro qrecord. Finalmente puedes usar qpop, qfold o editar .hg/patches/series para fusionar y reordenar los parches.


2
2018-05-17 14:28



Tengo un alias de shell, viq="vim $(hg root)/.hg/patches/", que uso solo para estas situaciones!

Solo correré viq para levantar los parches, luego edite manualmente la diferencia y mueva los trozos a otros parches, según corresponda.

Prefiero esto sobre los métodos interactivos (por ejemplo, git add -i) porque no me siento tan seguro trabajando desde el prompt interactivo como lo hago trabajando desde mi editor (sé que mi editor hace copias de seguridad, tiene un deshacer trivial, etc.).


0
2018-03-24 16:58