3 votes

Modifier un commit Mercurial sans ouvrir une fenêtre d'édition ?

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 ?

5voto

torek Points 25463

É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é.

3voto

peak Points 71

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

2voto

Craig Points 593

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X