graphlog: split the actual DAG grapher out into a separate method
This allows extensions like pbranch to use asciigraph() to graph dependencies
for patch branches, but could be used for basically any DAG.
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
hg init a
cd a
echo 'base' > base
hg ci -Ambase -d '1 0'
hg qnew -d '1 0' a
hg qnew -d '1 0' b
hg qnew -d '1 0' c
hg qdel
hg qdel c
hg qpop
hg qdel c
hg qseries
ls .hg/patches
hg qpop
hg qdel -k b
ls .hg/patches
hg qdel -r a
hg qapplied
hg log --template '{rev} {desc}\n'
hg qnew d
hg qnew e
hg qnew f
hg qdel -r e
hg qdel -r qbase:e
hg qapplied
hg log --template '{rev} {desc}\n'
cd ..
hg init b
cd b
echo 'base' > base
hg ci -Ambase -d '1 0'
hg qfinish
hg qfinish -a
hg qnew -d '1 0' a
hg qnew -d '1 0' b
hg qnew c # XXX fails to apply by /usr/bin/patch if we put a date
hg qfinish 0
hg qfinish b
hg qpop
hg qfinish -a c
hg qpush
hg qfinish qbase:b
hg qapplied
hg log --template '{rev} {desc}\n'
hg qfinish -a c
hg qapplied
hg log --template '{rev} {desc}\n'
ls .hg/patches