view tests/test-rebase-abort @ 11989:f853873fc66d

aliases: provide more flexible ways to work with shell alias arguments This patch changes the functionality of shell aliases to add more powerful options for working with shell alias arguments. First: the alias name + arguments to a shell alias are set as an HG_ARGS environment variable, delimited by spaces. This matches the behavior of hooks. Second: any occurrences of "$@" (without quotes) are replaced with the arguments, separated by spaces. This happens *before* the alias gets to the shell. Third: any positive numeric variables ("$1", "$2", etc) are replaced with the appropriate argument, indexed from 1. "$0" is replaced with the name of the alias. Any "extra" numeric variables are replaced with an empty string. This happens *before* the alias gets to the shell. These changes allow for more flexible shell aliases: [alias] echo = !echo $@ count = !hg log -r "$@" --template='.' | wc -c | sed -e 's/ //g' qqueuemv = !mv "`hg root`/.hg/patches-$1" "`hg root`/.hg/patches-$2" In action: $ hg echo foo foo $ hg count 'branch(default)' 901 $ hg count 'branch(stable) and keyword(fixes)' 102 $ hg qqueuemv myfeature somefeature
author Steve Losh <steve@stevelosh.com>
date Wed, 18 Aug 2010 18:56:44 -0400
parents 7fa3968004c1
children
line wrap: on
line source

#!/bin/sh

. $TESTDIR/helpers.sh

echo "[extensions]" >> $HGRCPATH
echo "graphlog=" >> $HGRCPATH
echo "rebase=" >> $HGRCPATH

createrepo() {
    rm -rf repo
    hg init repo
    cd repo
    echo 'c1' >common
    hg add common
    hg commit -d '0 0' -m "C1"

    echo 'c2' >>common
    hg commit -d '1 0' -m "C2"

    echo 'c3' >>common
    hg commit -d '2 0' -m "C3"

    hg update -C 1
    echo 'l1' >>extra
    hg add extra
    hg commit -d '3 0' -m "L1"

    sed -e 's/c2/l2/' common > common.new
    mv common.new common
    hg commit -d '4 0' -m "L2"
}

echo
createrepo > /dev/null 2>&1
hg --config extensions.hgext.graphlog= glog --template '{rev}: {desc}\n'

echo
echo '% Conflicting rebase'
hg --config extensions.hgext.rebase= rebase -s 3 -d 2 | cleanrebase

echo
echo '% Abort'
hg --config extensions.hgext.rebase= rebase --abort | cleanrebase

hg --config extensions.hgext.graphlog= glog  --template '{rev}: {desc}\n'

createrepo() {
    rm -rf repo
    hg init repo
    cd repo
    echo "a">a
    hg ci -A -m'A'
    echo "b">b
    hg ci -A -m'B'
    echo "c">c
    hg ci -A -m'C'
    hg up 0
    echo "b">b
    hg ci -A -m'B bis'
    echo "c1">c
    hg ci -A -m'C1'
}
echo
echo '% Rebase and abort without generating new changesets'

echo
createrepo > /dev/null 2>&1
hg --config extensions.hgext.graphlog= glog --template '{rev}:{desc|short}\n'

hg --config extensions.hgext.rebase= rebase -b 4 -d 2 | cleanrebase

hg --config extensions.hgext.graphlog= glog --template '{rev}:{desc|short}\n'

hg rebase -a | cleanrebase
hg glog --template '{rev}:{desc|short}\n'