zsh completion: disable defaults and verbose output when completing
If ui.verbose is set to True in hgrc, commands used to provide completions
would yield bad results. For example, qpush completion would include the
patch numbers and statuses as returned by qunapplied -v, instead of just
the patch names.
Defaults are also disabled when completing to prevent similar issues when
an option is set that changes a command's output.
#!/bin/sh
# Test config convert.cvsps.mergefrom config setting.
# (Should test similar mergeto feature, but I don't understand it yet.)
# Requires builtin cvsps.
"$TESTDIR/hghave" cvs || exit 80
CVSROOT=`pwd`/cvsrepo
export CVSROOT
# XXX copied from test-convert-cvs-synthetic
cvscall()
{
echo cvs -f "$@"
cvs -f "$@"
}
# output of 'cvs ci' varies unpredictably, so just discard it
# XXX copied from test-convert-cvs-synthetic
cvsci()
{
echo cvs -f ci "$@"
cvs -f ci "$@" >/dev/null 2>&1
}
# XXX copied from test-convert-cvs-synthetic
filterpath()
{
eval "$@" | sed "s:$CVSROOT:*REPO*:g"
}
echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $HGRCPATH
echo "graphlog = " >> $HGRCPATH
echo "[convert]" >> $HGRCPATH
echo "cvsps=builtin" >> $HGRCPATH
echo "cvsps.cache=0" >> $HGRCPATH
echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
echo % create cvs repository with one project
mkdir cvsrepo
filterpath cvscall -q -d "$CVSROOT" init
mkdir cvsrepo/proj
echo % populate cvs repository
cvscall -Q co proj
cd proj
touch file1
cvscall -Q add file1
cvsci -m"add file1 on trunk"
echo % create two release branches
cvscall -q tag -b v1_0
cvscall -q tag -b v1_1
echo % modify file1 on branch v1_0
filterpath cvscall -Q update -rv1_0
echo "change" >> file1
cvsci -m"add text"
echo % make unrelated change on v1_1
cvscall -Q update -rv1_1
touch unrelated
cvscall -Q add unrelated
cvsci -m"unrelated change"
echo % merge file1 to v1_1
filterpath cvscall -Q update -jv1_0
cvsci -m"add text [MERGE from v1_0]"
echo % merge change to trunk
cvscall -Q update -A
filterpath cvscall -Q update -jv1_1
cvsci -m"add text [MERGE from v1_1]"
echo % non-merged change on trunk
echo "foo" > file2
cvscall -Q add file2
cvsci -m"add file2 on trunk" file2
# this will create rev 1.3
echo % change on trunk to backport
echo "backport me" >> file1
cvsci -m"add other text" file1
cvscall log file1 | sed -n '/^date: / d; /^revision /,$ p;'
# XXX how many ways are there to spell "trunk" with CVS?
echo % backport trunk change to v1_1
cvscall -Q update -rv1_1
filterpath cvscall -Q update -j1.2 -j1.3 file1
cvsci -m"add other text [MERGE from HEAD]" file1
set -e
echo "% fix bug on v1_1, merge to trunk with error"
cvscall -Q update -rv1_1
echo "merge forward" >> file1
cvscall -Q tag unmerged
cvsci -m"fix file1"
cvscall -Q update -A
filterpath cvscall -Q update -junmerged -jv1_1
# note the typo in the commit log message
cvsci -m"fix file1 [MERGE from v1-1]"
cvs -Q tag -d unmerged
set -e
echo % convert to hg
cd ..
filterpath hg convert proj proj.hg
echo % complete log
template="{rev}: '{branches}' {desc}\n"
hg -R proj.hg log --template="$template"
echo % graphical log
hg -R proj.hg glog --template="$template"