--- a/hgext/convert/gnuarch.py Sun Feb 10 13:19:24 2008 +0100
+++ b/hgext/convert/gnuarch.py Tue Feb 12 10:38:34 2008 +0100
@@ -23,7 +23,7 @@
super(gnuarch_source, self).__init__(ui, path, rev=rev)
if not os.path.exists(os.path.join(path, '{arch}')):
- raise NoRepo(_("couldn't open GNU Arch repo %s" % path))
+ raise NoRepo(_("%s does not look like a GNU Arch repo" % path))
# Could use checktool, but we want to check for baz or tla.
self.execmd = None
--- a/tests/hghave Sun Feb 10 13:19:24 2008 +0100
+++ b/tests/hghave Tue Feb 12 10:38:34 2008 +0100
@@ -21,6 +21,9 @@
ret = fh.close()
return (ignorestatus or ret is None) and r.search(s)
+def has_baz():
+ return matchoutput('baz --version 2>&1', r'baz Bazaar version')
+
def has_cvs():
return matchoutput('cvs --version 2>&1', r'Concurrent Versions System')
@@ -102,6 +105,7 @@
os.rmdir(d)
checks = {
+ "baz": (has_baz, "GNU Arch baz client"),
"cvs": (has_cvs, "cvs client"),
"cvsps": (has_cvsps, "cvsps utility"),
"darcs": (has_darcs, "darcs client"),
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-baz Tue Feb 12 10:38:34 2008 +0100
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+"$TESTDIR/hghave" baz || exit 80
+
+echo "[extensions]" >> $HGRCPATH
+echo "convert=" >> $HGRCPATH
+echo 'hgext.graphlog =' >> $HGRCPATH
+
+echo % create baz archive
+baz make-archive baz@mercurial--convert hg-test-convert-baz
+
+echo % initialize baz repo
+mkdir baz-repo
+cd baz-repo/
+baz init-tree baz@mercurial--convert/baz--test--0
+baz import
+
+echo % create initial files
+echo 'this is a file' > a
+baz add a
+mkdir src
+baz add src
+cd src
+dd count=1 if=/dev/zero of=b > /dev/null 2> /dev/null
+baz add b
+baz commit -s "added a file, src and src/b (binary)"
+
+echo % create link file and modify a
+ln -s ../a a-link
+baz add a-link
+echo 'this a modification to a' >> ../a
+baz commit -s "added link to a and modify a"
+
+echo % create second link and modify b
+ln -s ../a a-link-2
+baz add a-link-2
+dd count=1 seek=1 if=/dev/zero of=b > /dev/null 2> /dev/null
+baz commit -s "added second link and modify b"
+
+echo % b file to link and a-link-2 to regular file
+rm -f a-link-2
+echo 'this is now a regular file' > a-link-2
+ln -sf ../a b
+baz commit -s "file to link and link to file test"
+
+echo % move a-link-2 file and src directory
+cd ..
+baz mv src/a-link-2 c
+baz mv src test
+baz commit -s "move and rename a-link-2 file and src directory"
+
+cd ..
+
+echo % converting baz repo to Mercurial
+hg convert baz-repo baz-repo-hg
+
+baz register-archive -d baz@mercurial--convert
+
+glog()
+{
+ hg glog --template '#rev# "#desc|firstline#" files: #files#\n' "$@"
+}
+
+echo % show graph log
+glog -R baz-repo-hg
+hg -R baz-repo-hg manifest --debug
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-baz.out Tue Feb 12 10:38:34 2008 +0100
@@ -0,0 +1,75 @@
+% create baz archive
+% initialize baz repo
+* creating version baz@mercurial--convert/baz--test--0
+* imported baz@mercurial--convert/baz--test--0
+% create initial files
+* build pristine tree for baz@mercurial--convert/baz--test--0--base-0
+* Scanning for full-tree revision: .
+* from import revision: baz@mercurial--convert/baz--test--0--base-0
+A/ .arch-ids
+A/ src
+A/ src/.arch-ids
+A .arch-ids/a.id
+A a
+A src/.arch-ids/=id
+A src/.arch-ids/b.id
+A src/b
+* update pristine tree (baz@mercurial--convert/baz--test--0--base-0 => baz--test--0--patch-1)
+* committed baz@mercurial--convert/baz--test--0--patch-1
+% create link file and modify a
+A src/.arch-ids/a-link.id
+A src/a-link
+M a
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-1 => baz--test--0--patch-2)
+* committed baz@mercurial--convert/baz--test--0--patch-2
+% create second link and modify b
+A src/.arch-ids/a-link-2.id
+A src/a-link-2
+Mb src/b
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-2 => baz--test--0--patch-3)
+* committed baz@mercurial--convert/baz--test--0--patch-3
+% b file to link and a-link-2 to regular file
+fl src/b
+lf src/a-link-2
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-3 => baz--test--0--patch-4)
+* committed baz@mercurial--convert/baz--test--0--patch-4
+% move a-link-2 file and src directory
+D/ src/.arch-ids
+A/ test/.arch-ids
+/> src test
+=> src/.arch-ids/a-link-2.id .arch-ids/c.id
+=> src/a-link-2 c
+=> src/.arch-ids/=id test/.arch-ids/=id
+=> src/.arch-ids/a-link.id test/.arch-ids/a-link.id
+=> src/.arch-ids/b.id test/.arch-ids/b.id
+* update pristine tree (baz@mercurial--convert/baz--test--0--patch-4 => baz--test--0--patch-5)
+* committed baz@mercurial--convert/baz--test--0--patch-5
+% converting baz repo to Mercurial
+initializing destination baz-repo-hg repository
+analyzing tree version baz@mercurial--convert/baz--test--0...
+scanning source...
+sorting...
+converting...
+5 initial import
+4 added a file, src and src/b (binary)
+3 added link to a and modify a
+2 added second link and modify b
+1 file to link and link to file test
+0 move and rename a-link-2 file and src directory
+% show graph log
+o 5 "move and rename a-link-2 file and src directory" files: c src/a-link src/a-link-2 src/b test/a-link test/b
+|
+o 4 "file to link and link to file test" files: src/a-link-2 src/b
+|
+o 3 "added second link and modify b" files: src/a-link-2 src/b
+|
+o 2 "added link to a and modify a" files: a src/a-link
+|
+o 1 "added a file, src and src/b (binary)" files: a src/b
+|
+o 0 "initial import" files:
+
+c4072c4b72e1cabace081888efa148ee80ca3cbb 644 a
+e3207be798aaf87a444a62903621edab4ddc1fb6 644 c
+1f6b5bb93f1da278ef1fead1e4740a03d8802e9f 644 @ test/a-link
+1f6b5bb93f1da278ef1fead1e4740a03d8802e9f 644 @ test/b