Pregunta La forma más fácil de dividir un conjunto de cambios en mercurial


Me siento cómodo usando git, pero últimamente he estado explorando Mercurial por curiosidad, según la opinión de un amigo, que es mejor en algunos aspectos.

Sin embargo, una de las primeras cosas que noté es que Mercurial no parece tener un índice como lo hace git. Tiendo a hacer más cambios, a veces debería y después de editar el archivo usaré git add -p para dividir el parche en commits separados. Si los cambios están en diferentes archivos, probablemente podría usar MQ, pero de lo contrario parece que primero debo deshacer los cambios.

¿Existe tal vez una extensión para Mercurial que proporcione una funcionalidad tipo índice?


23
2018-03-31 14:53


origen


Respuestas:


Estás en lo correcto al decir que no hay un índice estilo git. Puedes usar hg record (distribuido con Mercurial) o hg crecord. Ambos le permiten elegir por archivo o por hunk al comprometerse. crecord es más sofisticado, pero requiere maldiciones.

ACTUALIZACIÓN (2016-11-19)

La funcionalidad de la extensión de crecord ahora está disponible en el núcleo de Mercurial. Además, el uso está mejor integrado. La forma preferida de cometer trozos seleccionados es

$ hg commit --interactive

Por defecto, esto se comporta como el anterior grabar mando. Para obtener la interfaz basada en curses como en el viejo crecord comando, configure esto en su HGRC:

[ui]
interface = curses

18
2018-03-31 14:55



Hay dos formas de dividir un conjunto de cambios, dependiendo de si ya ha confirmado los cambios que desea dividir:

Para comprometer selectivamente los cambios desde su directorio de trabajo (si aún no ha confirmado sus cambios):

  • Utilizar hg record. (Esto es similar al uso git commit --patch.)

Para dividir un conjunto de cambios existente (si ya ha confirmado sus cambios):

  1. Utilizar hg histedit y selecciona el editar opción en el conjunto de cambios que desea editar. (Esto es similar al uso git rebase -i.)

  2. Utilizar hg record para comprometer selectivamente sus cambios como conjuntos de cambios separados.

  3. Utilizar hg histedit --continue cuando termines. Los cambios no confirmados restantes se incluirán en un conjunto de cambios final.

Como otros han mencionado, puedes usar hg crecord en lugar de hg record.


32
2017-12-12 01:56



Puede que le interese leer este artículo que explica cómo otras extensiones mercuriales, las colas de parches, son como el índice de esteroides de git:

http://stevelosh.com/blog/2010/08/a-git-users-guide-to-mercurial-queues/


1
2018-03-31 22:26