Mercurial > hg
view tests/test-convert-cvs @ 12039:18e1e7520b67 stable
alias: make shadowing behavior more consistent (issue2054)
Currently, given an alias like the following:
[alias]
summary = summary --remote
The alias might be executed - or it might not - depending on the order
of the cmdtable dict.
This happens because cmdalias gets assigned back to the cmdtable like so:
cmdtable['summary'] = ...
Yet '^summary|sum' is still in the table, so which one cmdutil.findcmd()
chooses isn't deterministic.
This patch makes cmdalias assign back to '^summary|sum'. It uses the same
cmdtable key lookup that extensions.wrapcommand() does.
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Sat, 21 Aug 2010 22:48:14 -0400 |
parents | 84a09639d9f1 |
children | d598d24a7e67 |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" cvs || exit 80 cvscall() { cvs -f "$@" } hgcat() { hg --cwd src-hg cat -r tip "$1" } echo "[extensions]" >> $HGRCPATH echo "convert = " >> $HGRCPATH echo "graphlog = " >> $HGRCPATH cat > cvshooks.py <<EOF def cvslog(ui,repo,hooktype,log): print "%s hook: %d entries"%(hooktype,len(log)) def cvschangesets(ui,repo,hooktype,changesets): print "%s hook: %d changesets"%(hooktype,len(changesets)) EOF hookpath=`pwd` echo "[hooks]" >> $HGRCPATH echo "cvslog=python:$hookpath/cvshooks.py:cvslog" >> $HGRCPATH echo "cvschangesets=python:$hookpath/cvshooks.py:cvschangesets" >> $HGRCPATH echo % create cvs repository mkdir cvsrepo cd cvsrepo CVSROOT=`pwd` export CVSROOT CVS_OPTIONS=-f export CVS_OPTIONS cd .. cvscall -q -d "$CVSROOT" init echo % create source directory mkdir src-temp cd src-temp echo a > a mkdir b cd b echo c > c cd .. echo % import source directory cvscall -q import -m import src INITIAL start cd .. echo % checkout source directory cvscall -q checkout src echo % commit a new revision changing b/c cd src sleep 1 echo c >> b/c cvscall -q commit -mci0 . | grep '<--' |\ sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' cd .. echo % convert fresh repo hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hgcat a hgcat b/c echo % convert fresh repo with --filemap echo include b/c > filemap hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hgcat b/c hg -R src-filemap log --template '{rev} {desc} files: {files}\n' echo % 'convert full repository (issue1649)' cvscall -q -d "$CVSROOT" checkout -d srcfull "." | grep -v CVSROOT ls srcfull hg convert srcfull srcfull-hg \ | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' \ | grep -v 'log entries' | grep -v 'hook:' \ | grep -v '^[0-3] .*' # filter instable changeset order hg cat -r tip srcfull-hg/src/a hg cat -r tip srcfull-hg/src/b/c echo % commit new file revisions cd src echo a >> a echo c >> b/c cvscall -q commit -mci1 . | grep '<--' |\ sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' cd .. echo % convert again hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hgcat a hgcat b/c echo % convert again with --filemap hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hgcat b/c hg -R src-filemap log --template '{rev} {desc} files: {files}\n' echo % commit branch cd src cvs -q update -r1.1 b/c cvs -q tag -b branch cvs -q update -r branch > /dev/null echo d >> b/c cvs -q commit -mci2 . | grep '<--' |\ sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' cd .. echo % convert again hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hgcat b/c echo % convert again with --filemap hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hgcat b/c hg -R src-filemap log --template '{rev} {desc} files: {files}\n' echo % commit a new revision with funny log message cd src sleep 1 echo e >> a cvscall -q commit -m'funny ---------------------------- log message' . | grep '<--' |\ sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' cd .. echo % commit new file revisions with some fuzz cd src echo f >> a cvscall -q commit -mfuzzy . | grep '<--' |\ sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' sleep 4 # the two changes will be split if fuzz < 4 echo g >> b/c cvscall -q commit -mfuzzy . | grep '<--' |\ sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g' cd .. echo % convert again hg convert --config convert.cvsps.fuzz=2 src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n' echo % testing debugcvsps cd src hg debugcvsps --fuzz=2 | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'