2009-01-24 13 views
52

Comment puis-je spécifier un message de validation multiligne pour mercurial sur la ligne de commande?Mercurial: multiline commit message sur la ligne de commande?

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

ne fonctionne pas. Les spectacles du journal:

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

Je suppose que cela doit être résolu par l'interpréteur de commandes lui-même. Si votre shell de commande peut vous donner un moyen de fournir du texte multiligne comme un seul paramètre (peut-être en ayant un '\' à la fin de la ligne), alors HG Shold n'a aucun problème avec ça ... –

+0

Oui, Je suppose que tu as raison. Cependant, c'est la seule utilisation pour moi personnellement, où je l'utiliserais régulièrement, c'est pourquoi je ne l'ai pas demandé comme une bash-question. – Martin

Répondre

73

Mercurial: multiligne message de validation sur la ligne de commande?

Frapper entrer.

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

L'une des choses est que seule la première ligne apparaît dans hg journal:

$ 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 

... mais si vous lancez « vue hg », vous pouvez voir que le message entier est Là.

Edité pour ajouter:

... mais hg journal -v affiche le message entier:

$ 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

Le comportement "Entrée" dépend des shells de type UNIX. Est-il possible de le faire avec Windows CMD? –

+0

@Hosam Mis à part l'installation de cygwin (ou mingwin) et l'utilisation de bash, je ne vois rien. –

+0

@Hosam Aly: Pouvez-vous utiliser \ n ou \ r \ n ou \ r? Je ne suis pas sûr si le shellexpands, mais Mercurial pourrait. –

9

Si vous le faites de manière interactive (par rapport à partir d'un script), il suffit de faire hg commit sans le drapeau -m. Je ne suis pas sûr de ce que le comportement est sur Linux ou Mac, mais sur Windows, il affiche le Bloc-notes avec un fichier que vous remplissez et enregistrez pour un message multiligne.

+0

Existe-t-il un moyen de sauvegarder et de fermer le bloc-notes en une seule fois? C'est ce qui m'énerve à propos de cette approche. –

+2

Je pense qu'il existe un moyen (via un fichier .ini) de dire à Mercurial d'appeler une autre application plutôt que le Bloc-notes, alors vous avez juste besoin de trouver votre éditeur préféré. –

+1

Il utilise l'éditeur spécifié dans le hgrc. Sous Windows, le bloc-notes est par défaut si aucun n'est spécifié. –

2

est ici une autre façon qui est plus proche de ce que vous avez essayé d'abord:

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

Je sais, il y a déjà une solution pour les utilisateurs de Linux, mais je besoin d'une autre solution pour les fenêtres ligne de commande, donc j'étais à sa recherche ...

Et je l'ai trouvé un: https://www.mercurial-scm.org/pipermail/mercurial/2011-November/040855.html

hg commit -l filename.txt 

je l'espère, il est utile pour quelqu'un là-bas,)

[EDIT] oO - il a déjà été ajouté à l'aide

FICHIER -l --logfile lire le message de validation de fichier

16

De de Windows cmd, faites cette commande pour un commit multiligne.

hg commit -l con 

Cela vous permet d'entrer une ligne multiple message de validation directement à partir de la ligne de commande. Pour mettre fin à votre message, a frappé Entrez, et sur une ligne par lui-même frappé Ctrl +Z et Entrez à nouveau.

Pourquoi? L'option -l à hg commit indique de lire le message de validation à partir d'un fichier et con indique que le fichier est en fait la console.

+0

Toujours chercher un moyen dans les docs de le faire pour la commande "hg tag" parce que - l' est '--local' et non" --logfile "(comme pour hg commit). – zanlok

0

Pour de Windows avec PowerShell:

hg commit --message "foo`nbar"