stringutil: emit multiple chunks when pretty printing
This avoids concatenating output inside pprintgen() itself. But
the real reason for this is it will make it easier to add
indentation, as we'll need to account for indentation when emitting
each individual object in a collection.
The verbosity of this code compared to the original is a bit
unfortunate. But I suppose this is the price to pay for having
nice things (streaming and indenting).
We could probably abstract the "print a collection" bits into a
generic function to avoid some duplication. But I'm not
overly inclined to do this.
Differential Revision: https://phab.mercurial-scm.org/D4398
#require bzr
$ . "$TESTDIR/bzr-definitions"
$ cat > ghostcreator.py <<EOF
> import sys
> from bzrlib import workingtree
> wt = workingtree.WorkingTree.open('.')
>
> message, ghostrev = sys.argv[1:]
> wt.set_parent_ids(wt.get_parent_ids() + [ghostrev])
> wt.commit(message)
> EOF
ghost revisions
$ mkdir test-ghost-revisions
$ cd test-ghost-revisions
$ bzr init -q source
$ cd source
$ echo content > somefile
$ bzr add -q somefile
$ bzr commit -q -m 'Initial layout setup'
$ echo morecontent >> somefile
$ $PYTHON ../../ghostcreator.py 'Commit with ghost revision' ghostrev
$ cd ..
$ hg convert source source-hg
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Initial layout setup
0 Commit with ghost revision
$ glog -R source-hg
o 1@source "Commit with ghost revision" files+: [], files-: [], files: [somefile]
|
o 0@source "Initial layout setup" files+: [somefile], files-: [], files: []
$ cd ..