minirst: support containers
Text can be grouped into generic containers in reStructuredText:
.. container:: foo
This is text inside a "foo" container.
.. container:: bar
This is nested inside two containers.
The minirst parser now recognizes these containers. The containers are
either pruned completely from the output (included all nested blocks)
or they are simply un-indented. So if 'foo' and 'bar' containers are
kept, the above example will result in:
This is text inside a "foo" container.
This is nested inside two containers.
If only 'foo' containers are kept, we get:
This is text inside a "foo" container.
No output is made if only 'bar' containers are kept.
This feature will come in handy for implementing different levels of
help output (e.g., verbose and debug level help texts).
#!/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 % 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 % convert again
hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
echo "graphlog = " >> $HGRCPATH
hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n'
echo % testing debugcvsps
cd src
hg debugcvsps | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'