2010-11-27 10 views
7

Quand je lance hg commit, Mercurial génère un fichier pour mon message de commit qui ressemble à ceci:Comment personnaliser le 'commit message file' généré par `hg commit`?

HG: Enter commit message. Lines beginning with 'HG:' are removed. 
HG: Leave message empty to abort commit. 
HG: -- 
HG: user: Henri Wiechers <[email protected]> 
HG: branch 'default' 
HG: added a.txt 

Est-il possible de personnaliser ce fichier? Je voudrais inclure si la copie de travail a tous les fichiers inconnus.

+0

http://programmers.stackexchange.com semble plus approprié pour cette –

Répondre

3

Il n'y a aucun moyen officiel pour le faire w/o modifier mercurial lui-même (pas très intimidant, il est Python très propre), mais voici une façon de le faire en modifiant légèrement le editor réglage de la section [ui] de votre ~/.hgrc:

editor = hg status --unknown >! /tmp/unknown_list ; /usr/bin/vim -c "r /tmp/unknown_list" 

C'est, bien sûr vim sur Linux spécifique, mais la même chose pourrait être fait pour tout éditeur décent sur tout système d'exploitation.

+0

Cela ne fonctionne pas vraiment, il fait? Vous devez laisser l'éditeur ouvrir le fichier généré par Mercurial - éditer '/ tmp/unknown_list' ne suffit pas. Aussi, méfiez-vous des attaques par liens symboliques lorsque vous écrivez dans des fichiers dans '/ tmp'! –

+0

Cela fonctionne. L'éditeur ouvre le fichier créé par mercurial puis -c "r/tmp/unknown_list" dit à vim de lire le contenu de ce fichier de listage en haut du tmpfile créé et vim chargé. Tu as raison de dire que j'utiliserais ~/tmp et un $$ dans le monde réel bien que je sois habituellement sur des machines dont je suis le seul utilisateur. –

+0

Quand je l'essaie, je vois 'abort:/tmp/unknown_list pas sous root' et un fichier appelé"! " est créé à la place. Je n'ai jamais vu le style de redirection '>!', Et cela ne marche pas dans sh ou bash sur mon système ... était-ce une faute de frappe? –

1

Utilisez hg commit -m "My message here". Vous pouvez également configurer un éditeur dans votre fichier Mercurial.ini ou ~/.hgrc. Ajoutez ce qui suit:

[ui] 
editor = /path/to/your/favorite/editor 
2

Je voulais faire cela sous Windows. L'idée de personnaliser le paramètre de l'éditeur dans le fichier ini/.hgrc m'a fait penser à remplacer la commande editor par un fichier de commandes.

par exemple. si vous définissez ceci dans Mercurial.ini:

[ui] 
editor = c:\path\to\hgedit.cmd 

alors hg appellera le fichier de commande et de transmettre le nom du fichier temporaire sur la ligne de commande. Le nom du fichier temporaire peut ensuite être accédé dans le fichier de commande en utilisant le paramètre% 1.

hgedit.cmd pourrait être quelque chose comme:

@echo off 
hg status --unknown>>%1 
notepad %1 

Si vous voulez ajouter la sortie de hg que les commentaires que vous pourriez faire ceci:

@echo off 
echo HG: -->>%1 
echo HG: Unknown files:>>%1 
for /f "tokens=*" %%a in ('hg st --unknown') do echo HG: %%a>>%1 
notepad %1 

(Vous ne devez pas utiliser . bloc-notes de cours)

1

une variante Mac/Linux de la réponse de Jim Eggleston ... J'ai fait un script appelé hg-commit-éditeur:

#!/bin/sh 
hg status --unknown | sed -e 's|^|HG: |' >> $1 
editor $1 

puis définir comme mon engagement dans mon éditeur hgrc:

[ui] 
editor = hg-commit-editor 
0

Il y a plusieurs façons de le faire. Certains sont même listed on the official wiki. Cela se développe sur @ Ry4an réponse. Vous pouvez ajouter à votre ~/.hgrc

[ui] 
editor = function hgvi { hg status --unknown | sed 's/^/HG: /g' >> "$1"; vi "$1"; }; hgvi