2010-11-27 11 views
7

Cuando corro hg commit, Mercurial genera un archivo para mi mensaje de entrega que tiene este aspecto:¿Cómo personalizo el 'archivo de mensaje de confirmación' generado por `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 

¿Hay una manera de personalizar este archivo? Me gustaría incluir si la copia de trabajo tiene archivos desconocidos.

+0

http://programmers.stackexchange.com parece más adecuado para este –

Respuesta

3

No hay manera oficial a hacerlo w/o modificación de mercurio en sí (no es terriblemente intimidante, es Python muy limpia), pero aquí es una manera de hacerlo mediante la deformación de la editor la sección de configuración [ui] de su ~/.hgrc:

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

Esto es, por supuesto vim en Linux específica, pero el mismo podría hacerse para cualquier editor decente en cualquier sistema operativo.

+0

Esto no funciona muy bien, ¿verdad? Debe permitir que el editor abra el archivo generado por Mercurial; la edición '/ tmp/unknown_list' no es suficiente. Además, ¡ten cuidado con los ataques de enlace simbólico cuando escribas en archivos en '/ tmp'! –

+0

Funciona. El editor abre el archivo creado por mercurial y luego -c "r/tmp/unknown_list" le dice a vim que lea en el contenido de ese archivo listado en la parte superior del tmpfile mercurial creado y vim cargado. Tienes razón de que estaría usando ~/tmp y un $$ en el mundo real, aunque normalmente estoy en máquinas donde soy el único usuario. –

+0

Cuando lo intento, veo 'abort:/tmp/unknown_list no en la raíz' y un archivo llamado"! " se crea en su lugar. Nunca he visto el estilo '>!' De redirección, y no funciona en sh o bash en mi sistema ... ¿fue eso un error tipográfico? –

1

Use hg commit -m "My message here". También puede configurar un editor en su archivo Mercurial.ini o ~/.hgrc. Agregue el siguiente:

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

Yo quería hacer esto en Windows. La idea de personalizar la configuración del editor en el archivo ini/.hgrc me hizo pensar en reemplazar el comando del editor con un archivo de comando.

p. Ej. si se establece esto en mercurial.ini:

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

continuación hg llamará al archivo de comando y pase el nombre del archivo temporal en la línea de comandos. El nombre del archivo temporal se puede acceder en el archivo de comando usando el parámetro% 1.

hgedit.cmd podría ser algo como:

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

Si desea anexar la salida de Hg como comentarios que usted puede hacer esto:

@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 

(Usted no tiene que usar . bloc de notas, por supuesto) variante

1

un Mac/Linux de la respuesta de Jim Eggleston ... hice un script llamado hg-commit-editor:

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

y luego otra vez como mi editor de comprometerse en mi hgrc:

[ui] 
editor = hg-commit-editor 
0

Hay muchas maneras de hacer esto. Algunos incluso son listed on the official wiki. Esto expande la respuesta @ Ry4an. Puede agregar esto a su ~/.hgrc

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