#!/bin/sh commit() { msg=$1 p1=$2 p2=$3 if [ "$p1" ]; then hg up -qC $p1 fi if [ "$p2" ]; then HGMERGE=true hg merge -q $p2 fi echo >> foo hg commit -d '0 0' -qAm "$msg" foo } hg init repo cd repo echo '[extensions]' > .hg/hgrc echo 'hgext.parentrevspec =' >> .hg/hgrc commit '0: add foo' commit '1: change foo 1' commit '2: change foo 2a' commit '3: change foo 3a' commit '4: change foo 2b' 1 commit '5: merge' 3 4 commit '6: change foo again' hg log --template '#rev#:#node|short# #parents#\n' echo lookup() { for rev in "$@"; do printf "$rev: " hg id -nr $rev done true } tipnode=`hg id -ir tip` echo 'should work with tag/branch/node/rev' for r in tip default $tipnode 6; do lookup $r^ done echo echo 'some random lookups' lookup 6^^ 6^^^ 6^^^^ 6^^^^^ 6^^^^^^ 6^1 6^2 6^^2 6^1^2 6^^3 lookup 6~ 6~1 6~2 6~3 6~4 6~5 6~42 6~1^2 6~1^2~2 echo echo 'with a tag "6^" pointing to rev 1' hg tag -l -r 1 6^ lookup 6^ 6^1 6~1 6^^ echo echo 'with a tag "foo^bar" pointing to rev 2' hg tag -l -r 2 foo^bar lookup foo^bar foo^bar^