Mercurial > hgsubversion
view tests/fixtures/emptyrepo2.sh @ 1101:4a92eb1484ba
layouts: fix crash when importing hgsubversion itself (issue #402)
Mercurial extensions are a bit weird: they aren't normally in
sys.path, so you can't assume that "import hgsubversion" works.
Luckily, Mercurial sneaks a little treat into sys.modules so that
"import hgext_hgsubversion" does work. In fact, to get things working
*as a Mercurial extension*, all that's needed is that trivial change
to two import lines, in layouts/detect.py and layouts/standard.py.
Unfortunately, hgsubversion is also imported as a Python module, in
its own test suite. In that context, there is no "hgext_" trick --
unless we do it in ourselves, which I've done in TestBase.setUp().
That would work fine ... except that test_util imports from
hgsubversion, which ends up importing hgsubversion.layouts.{detect,standard},
which want the "hgext_" trick to work. But it hasn't been done yet
when we're still importing; it doesn't happen until setUp() runs.
So make those two imports happen late, in the functions that need them.
Incidentally, this is only necessary to support Mercurial <= 2.7.
Mercurial got a bit smarter in 2.8:
http://selenic.com/repo/hg/rev/621a26eb3a99
author | Greg Ward <greg@gerg.ca> |
---|---|
date | Thu, 02 Jan 2014 21:53:39 -0500 |
parents | f9014e28721b |
children |
line wrap: on
line source
#!/bin/sh # # Create emptyrepo2.svndump # # The generated repository contains a sequence of empty revisions # created with a combination of svnsync and filtering mkdir temp cd temp mkdir project-orig cd project-orig mkdir -p sub/trunk other echo a > other/a cd .. svnadmin create testrepo svnurl=file://`pwd`/testrepo svn import project-orig $svnurl -m init svn co $svnurl project cd project echo a >> other/a svn ci -m othera echo a >> other/a svn ci -m othera2 echo b > sub/trunk/a svn add sub/trunk/a svn ci -m adda cd .. svnadmin create testrepo2 cat > testrepo2/hooks/pre-revprop-change <<EOF #!/bin/sh exit 0 EOF chmod +x testrepo2/hooks/pre-revprop-change svnurl2=file://`pwd`/testrepo2 svnsync init --username svnsync $svnurl2 $svnurl/sub svnsync sync $svnurl2 svnadmin dump testrepo2 > ../emptyrepo2.svndump