version-control mercurial commit mercurial-queue

version control - Realice una confirmación vacía con mercurial



version-control commit (2)

Puede hacer commit que está cerrando la rama:

hg commit --close-branch -m "message"

Actualizar:

Puede cerrar la bifurcación una vez, pero puede volver a abrirse con otra confirmación. La forma más sencilla de reabrir una sucursal sin cambiar los archivos es etiquetar alguna revisión. Entonces puedes usar hg commit --close-branch para commit vacío y luego hg tag para reapertura.

Actualizar v2

De hecho, puedes crear nuevos commit vacíos con solo el comando hg tag . Tiene el parámetro -m para establecer un mensaje de confirmación. Si realmente no le importa la corrección de estas etiquetas, puede usar solo un nombre de etiqueta llamando a la hg tag con el parámetro -f :

hg tag t1 -f -m "message"

Con la extensión de colas Mercurial, puedo hacer una confirmación vacía con algún mensaje de confirmación como ese:

hg qnew patch_name -m "message"

¿Hay alguna manera de hacer esto sin colas de Mercurial? Intenté simplemente:

hg commit -m "message"

pero hg simplemente dice "nada ha cambiado" y no hace el compromiso, y no veo ninguna opción de "fuerza" que anule eso.

Si se está preguntando sobre mi motivación para hacer esto: tenemos una infraestructura de pruebas donde ingresa a un repositorio especial y activará la ejecución de pruebas automatizadas. Debe poner una cadena especial en el mensaje de confirmación de la confirmación más puntual que indique qué pruebas ejecutar. Obviamente, no quiero esta cadena cuando accedo al repositorio real. En lugar de modificar el compromiso dos veces (una para agregar la cadena especial, y una segunda vez para eliminarla), me parece más sencillo agregar una confirmación vacía y luego retrotraerla, y puedo hacerlo con mq, pero me gustaría encontrar una manera de hacerlo sin mq.


Puede usar hg commit --amend para crear commits vacíos.

Simplemente crea una confirmación arbitraria y anula el cambio. Después dobla ambos commits juntos.

Ejemplo:

touch tmp # create dummy file hg add tmp # add file and... hg commit -m "tmp" # ... commit hg rm tmp # remove the file again and ... hg commit --amend -m "empty commit" # ... commit