¿Cómo se muestra la revisión de trabajo actual en "hg log" de mercurial?

Quiero que mi "hg h" (salida de un alias de logging hg) muestre cuál es mi revisión actualmente en funcionamiento en el context del historial / logging.

En mi .hgrc tengo lo siguiente:

[alias] h = log --template "{rev} {node|short} {date|shortdate} | [{author|user}] {desc|strip|firstline} :: {tags}\n" 

Aquí hay un resultado de muestra:

 $ hg h 1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip 0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit :: 

Pero si actualizo a la revisión 0, la salida sigue siendo la misma:

 $ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg h 1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip 0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit :: 

Un ejemplo de salida deseada sería:

 $ hg h 1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip 0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit :: [working] 

nota: que [trabajar] NO es una label, solo mi revisión de trabajo, la que actualicé.

Otro ejemplo podría ser:

 $ hg h 1 f130b4194c90 2011-07-21 | | [slashfoo] added a comment :: tip 0 f4b4ec3c8c95 2011-07-21 |X| [slashfoo] initial commit :: 

Personalicé mi salida "hg h" usando la input de hgbook en "Personalizar la salida de Mercurial" http://hgbook.networking-bean.com/read/customizing-the-output-of-mercurial.html

Alternativas a lo que quiero hacer podría ser:

  1. utilizando la extensión de logging de charts y haciendo hg h -G para que un @ denote la revisión de trabajo actual
  2. usando hg id para saber qué revisión soy
  3. utilizando hg parents para saber qué revisión estoy con alguna información adicional

Pero solo la alternativa n. ° 1 me muestra el context, pero hg log -G y los alias son un poco less "compactos" que mi salida deseada.

Aquí hay una muestra de la salida de la alternativa n. ° 1

 $ hg h -G o 1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip | @ 0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit :: 

Esta pregunta es similar a ¿Cómo puedo encontrar mi revisión de trabajo en mercurial, pero la quiero en context, y de forma compacta (es decir, sin -G)

En un ambiente parecido a un bash, el siguiente pequeño monstruo de un bash-alias hace el truco:

 alias hgh='hg log -G --template "{rev} {node|short} {date|shortdate} | [{author|user}] {desc|strip|firstline} :: {tags}\n" | grep -v "^[|/\\ ]*$" | sed -e "s,^[o|/\\ +-]*,," -e "s,^@ *\(.*\),\1 [working]," | less' 

Utiliza la opción -G y grep y sed para quitar todo el material gráfico, excepto el marcador @ , que se reemplaza por un marcador [working] al final de la línea.

Es cierto que esta es una solución que funciona pero fea. Utilizar commands y opciones Mercurial puros sería mucho mejor, pero parece que el sistema de templates no proporciona lo que usted desea.

Como nota al margen, es posible que desee echar un vistazo a la extensión de la brújula que escribí, no lo que está buscando específicamente, sino que también ayuda a ver su context actual dentro de un repository.

hg log --rev $(hg id -i | sed 's/.$//')

Use un set de revisión para elegir los sets de cambios que desee. Si agrega

 -r "limit(.::, 4) + last(::., 4)" 

al final de su alias, verá la revisión principal de la copy de trabajo más tres sets de cambios antes y después para el context.

Desafortunadamente, no habrá ningún indicio de dónde está la salida en la copy de trabajo de la revisión de trabajo: estará en la parte superior cuando esté en la punta, y estará en el medio cuando esté en algún otro lugar en el historial.