2009-08-05 10 views
43

Estoy muy familiarizado con el flujo de trabajo de subversión y el hecho de que el 99,9% de las veces mi computadora está conectada a Internet, no me gusta hacer 'hg ci' y 'hg push' por separado.empuje automático mercurial en cada confirmación

Recuerdo que bzr tenía un comando 'checkout' que vincularía los comandos 'commit' subsiguientes para comprometerse automáticamente con el servidor ('push').

¿Mercurial tiene algo similar a esto?

PD: Escribir un script de shell o un alias que ejecute 'hg ci $ * & & hg push' sería lo último que haría.

+2

¿Por qué no un script? ¿Un gancho no hace el 0.1% de las veces que quieres comprometer sin un empuje mucho más difícil? –

Respuesta

54

Puede agregar hook para ejecutar la inserción después de una confirmación correcta.

EDIT: Acabo de probarlo y parece funcionar bien. He añadido el siguiente al archivo .hg/hgrc del repositorio que quería activar automática presionando por:

[hooks] 
commit.autopush = hg push 

EDIT 2: Además, hacer no tiene que preocuparse por algo como esto:

  • Estás en un repositorio que no desea querer presionar automáticamente.
  • Utiliza hg -R ~/another-repo-that-autopushes commit para confirmar en un repositorio diferente que hace empujar automáticamente.
  • ¿El gancho hg push terminará presionando los cambios en el directorio actual en lugar del que está cometiendo?

No, no lo hará. De acuerdo con la página que he vinculado:

Un gancho ejecutable siempre se ejecuta con su directorio actual establecido en el directorio raíz de un repositorio.

Es una funda lateral, pero Mercurial la maneja correctamente.

+1

El problema con este gancho es que los comandos mq que crean confirmaciones temporales (qnew, qpush, etc.) activarán un empuje. Usar el enganche post-commit podría ser una mejor idea. – hwiechers

+0

@hwiechers: ¿puedes dar un ejemplo de cómo escribir un gancho post-commit? – max

+10

@max: en lugar de usar 'commit.autopush = hg push' do' post-commit.autopush = hg push'. El enganche posterior a la ejecución se ejecuta después de que el comando de confirmación se complete con éxito. El enganche commit se ejecuta cada vez que se crea un conjunto de cambios en el repositorio local. Ver http://linux.die.net/man/5/hgrc para más detalles. – hwiechers

Cuestiones relacionadas