view tests/test-mq-qclone-http @ 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 662b0f9eb148
children
line wrap: on
line source

#! /bin/sh

echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH

mkdir webdir
cd webdir

hg init a
hg --cwd a qinit -c
echo a > a/a
hg --cwd a ci -A -m a
echo b > a/b
hg --cwd a addremove
hg --cwd a qnew -f b.patch
hg --cwd a qcommit -m b.patch

hg --cwd a log --template "{desc}\n"
hg --cwd a/.hg/patches log --template "{desc}\n"

root=`pwd`

cd ..

echo % test with recursive collection

cat > collections.conf <<EOF
[paths]
/=$root/**
EOF

hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
    -A access-paths.log -E error-paths-1.log
cat hg.pid >> $DAEMON_PIDS

"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw'

hg qclone http://localhost:$HGPORT/a b
hg --cwd b log --template "{desc}\n"
hg --cwd b qpush -a
hg --cwd b log --template "{desc}\n"

echo % test with normal collection

cat > collections1.conf <<EOF
[paths]
/=$root/*
EOF

hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf collections1.conf \
    -A access-paths.log -E error-paths-1.log
cat hg.pid >> $DAEMON_PIDS

"$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw'

hg qclone http://localhost:$HGPORT1/a c
hg --cwd c log --template "{desc}\n"
hg --cwd c qpush -a
hg --cwd c log --template "{desc}\n"

echo % test with old-style collection

cat > collections2.conf <<EOF
[collections]
$root=$root
EOF

hg serve -p $HGPORT2 -d --pid-file=hg.pid --webdir-conf collections2.conf \
    -A access-paths.log -E error-paths-1.log
cat hg.pid >> $DAEMON_PIDS

"$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/?style=raw'

hg qclone http://localhost:$HGPORT2/a d
hg --cwd d log --template "{desc}\n"
hg --cwd d qpush -a
hg --cwd d log --template "{desc}\n"

echo '% test --mq works and uses correct repository config'
hg --cwd d outgoing --mq | sed "s|$HGPORT2|\$HGPORT2|"
hg --cwd d log --mq --template '{rev} {desc|firstline}\n'