setup: prefer using the system hg to interact with the local repository
Add a findhg() function that tries to be smarter about figuring out how to run
hg for examining the local repository. It first tries running "hg" from the
user's PATH, with the default HGRCPATH settings intact, but with HGPLAIN
enabled. This will generally use the same version of mercurial and the same
settings used to originally clone the repository, and should have a higher
chance of working successfully than trying to run the hg script from the local
repository. If that fails findhg() falls back to the existing behavior of
running the local hg script.
#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: somefile
|
o 0@source "Initial layout setup" files: somefile
$ cd ..