¿Cómo escribir un empuje inteligente para mercurial, uno que tire y se fusione antes de empujar?

Estoy buscando hacer algún tipo de alias para hg push por lo que automáticamente hará un hg pull, hg merge, hg commit y hg push por sí mismo.

Obviamente, si algo sale mal, como conflictos en la fusión, se detendrá.

Hasta ahora escribí esto pero no funciona cuando no tienes nada que sacar:

hg pull -u && hg merge && hg ci -m "merge" && hg push

Cuando no tenga nada para fusionar, fallará con:

abort: there is nothing to merge

preguntado el 21 de mayo de 12 a las 12:05

1 Respuestas

Una extensión incorporada llamada ha podido recuperar hace todo eso pero empuja:

En el caso más simple, hg fetch actúa como hg pull -u — extrae los cambios de un repositorio remoto a uno local y actualiza el directorio de trabajo. (Esto es como el comando "actualizar" que se encuentra en Subversion o CVS).

Si es necesario fusionar los cambios extraídos, la extensión de búsqueda intenta una hg merge seguido de una hg commit.

Habilite la extensión, luego haga:

$ hg fetch && hg push

Sin embargo, considere hacer rebase (fusión de avance rápido) en lugar de una fusión regular. Esto ayuda a mantener el linaje limpio de las confirmaciones interminables de "fusión", ya que es tan seguro como una fusión regular si --keep los conjuntos de cambios originales.

De hecho, mi flujo de trabajo habitual cuando trabajo en una sola tarea es así:

# edit some files, test
$ hg commit
# edit some more files, test
$ hg commit
$ hg pull --rebase
$ hg push

Respondido el 20 de junio de 20 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.