2009-01-24 15 views
52

¿Cómo puedo especificar un mensaje de compromiso de líneas múltiples para mercurial en la línea de comandos?Mercurial: mensaje de confirmación de multilínea en la línea de comando?

hg commit -m "* add foo\n* fix bar" 

no funciona. Los espectáculos de registro:

changeset: 13:f2c6526e5911 
tag:   tip 
date:  Fri Jan 23 23:22:36 2009 +0100 
files:  foobar.cpp 
description: 
    * add foo\n*fix bar 
+0

supongo que esto tiene que ser resuelto a través de la misma consola de comandos. Si su shell de comandos puede darle una forma de suministrar texto multilínea como un parámetro único (tal vez al tener una '\' al final de la línea), entonces HG shold no tiene ningún problema ... –

+0

Sí, Supongo que tienes razón. Sin embargo, este es el único caso de uso para mí personalmente, donde lo usaría regularmente, es por eso que no lo pregunté como una pregunta bash. – Martin

Respuesta

73

Mercurial: MULTILINE comprometerse mensaje en la línea de comandos?

Hit enter.

$ hg commit -m "Did some work 
> Now I'm done" 

Una de las cosas es que sólo la primera línea aparece en el registro de Hg:

$ hg log 
changeset: 0:d2dc019450a2 
tag:   tip 
user:  Aaron Maenpaa <[email protected]> 
date:  Sat Jan 24 07:46:23 2009 -0500 
summary:  Did some work 

... pero si el fuego de "vista hg" se puede ver que todo el mensaje es ahí.

Editado para añadir:

... pero log -v hg muestra todo el mensaje:

$ hg -v log 
changeset: 0:d2dc019450a2 
tag:   tip 
user:  Aaron Maenpaa <[email protected]> 
date:  Sat Jan 24 07:46:23 2009 -0500 
files:  work 
description: 
Did some work 
Now I'm done 
+5

El comportamiento "Enter" depende de las shells similares a UNIX. ¿Hay alguna manera de hacerlo con Windows CMD? –

+0

@Hosam Aparte de instalar cygwin (o mingwin) y usar bash no se me ocurre nada. –

+0

@Hosam Aly: ¿Puedes usar \ n o \ r \ n o \ r? No estoy seguro si el shellex lo usa, pero Mercurial podría. –

9

Si lo están haciendo de forma interactiva (frente a partir de un guión), acaba de hacer hg commit sin la bandera -m. No estoy seguro de cuál es el comportamiento en Linux o Mac, pero en Windows aparece el Bloc de notas con un archivo que usted completa y guarda para un mensaje de varias líneas.

+0

¿Hay alguna forma de guardar y cerrar el Bloc de notas con una sola pulsación de tecla? Eso es lo que me molesta de este enfoque. –

+2

Creo que hay una manera (a través de un archivo .ini) de decirle a Mercurial que llame a alguna otra aplicación en lugar de al Bloc de notas, entonces solo necesita encontrar su editor favorito. –

+1

Utiliza el editor especificado en el hgrc. En Windows, se establece de forma predeterminada en Bloc de notas si no se especifica ninguno. –

2

Ésta es otra manera que es más cerca de lo que se trató en un principio:

hg commit -m "$(echo -e 'foo\nbar')" 
4

yo sepa, no es ya una solución para los usuarios de Linux, pero necesitaba otra solución para la línea de comandos de Windows, por lo que era en busca de ella ...

y he encontrado uno: https://www.mercurial-scm.org/pipermail/mercurial/2011-November/040855.html

hg commit -l filename.txt 

espero, es útil para alguien por ahí,)

[EDIT] oO - que ya ha sido añadido a la ayuda

ARCHIVO --logfile -l leer el mensaje del informe de archivo

16

De de Windows cmd, hacer este comando para un compromiso de líneas múltiples.

hg commit -l con 

Esto le permite ingresar un mensaje de confirmación de línea múltiple directamente desde la línea de comando. Para finalizar su mensaje, golpeó Introduzca, y en una línea por sí mismo golpe Ctrl +Z y Introduzca nuevo.

¿Por qué? La opción -l de hg commit dice que se lea el mensaje de confirmación de un archivo, y con especifica que el archivo es realmente la consola.

+0

Todavía buscando encontrar una manera en los documentos para hacer esto para el comando" etiqueta hg "porque' - l' es '--local' y no" --logfile "(como lo es para hg commit). – zanlok

0

Para de Windows PowerShell con:

hg commit --message "foo`nbar" 
Cuestiones relacionadas