Lorsque j'utilise la commande mercuriale ( hg commit --amend
), la fenêtre de l'éditeur s'ouvre toujours. Dans git, je peux éviter cela en git commit -a --amend -CHEAD
existe-t-il un équivalent pour mercurial ?
Réponses
Trop de publicités?Étant donné que vous avez, et que vous utilisez, hg commit --amend
La méthode la plus simple consiste à inciter Mercurial à utiliser un éditeur qui ne fait rien, laissant le fichier de messages inchangé et donc utilisable :
$ hg --config ui.editor=true commit --amend
saved backup bundle to [long path redacted]
C'est-à-dire, Mercurial a fait ouvrir une "fenêtre d'éditeur" (ou une commande d'éditeur, de toute façon), c'est juste que cette une- /bin/true
-a immédiatement dit "tout a marché" sans toucher le terminal interactif.
Remarque : si vous avez HGEDITOR
défini dans votre environnement, cela remplacera en fait ui.editor
:
def geteditor(self):
'''return editor to use'''
if pycompat.sysplatform == 'plan9':
# vi is the MIPS instruction simulator on Plan 9. We
# instead default to E to plumb commit messages to
# avoid confusion.
editor = 'E'
else:
editor = 'vi'
return (encoding.environ.get("HGEDITOR") or
self.config("ui", "editor") or
encoding.environ.get("VISUAL") or
encoding.environ.get("EDITOR", editor))
donc :
HGEDITOR=true hg commit --amend
fera la même chose de manière plus fiable (et avec un peu moins de frappe), mais ce n'est pas indiqué de cette manière dans la documentation, qui dit seulement que HGEDITOR
est déprécié.
Aunque hg amend
est toujours marqué comme expérimental, je n'ai jamais rencontré de problèmes en l'utilisant. Cependant, il convient de noter que lorsque l'on utilise hg commit
on peut toujours éviter la fenêtre de l'éditeur en spécifiant un message. Dans le cas d'une modification, il peut être judicieux de conserver le message précédent, ce qui peut être fait de plusieurs manières, mais deux méthodes robustes sont illustrées par ce qui suit :
hg commit --amend -m "$(hg log -l 1 --template '{desc}')" --date now
hg commit --amend -m "$(cat $(hg root)/.hg/last-message.txt)" --date now
Toutefois, à des fins pratiques, si votre plate-forme le prend en charge, il serait plus simple d'utiliser HGEDITOR :
HGEDITOR=true hg commit --amend --date now
Il existe une extension expérimentale qui a été ajoutée à mercurial 4.3.1, appelée "amend". Elle effectue la même action que commit --amend à l'exception du fait qu'elle n'ouvre pas de fenêtre d'édition pour les commentaires.
hg amend
Il est marqué comme expérimental, mais je l'utilise assez souvent sans aucun problème.
Il existe également un unamend
qui annulera l'opération de modification la plus récente sur un jeu de modifications en cours.