# HG changeset patch # User Aleix Conchillo Flaque # Date 1202812506 -3600 # Node ID ea34059b89deb34a1fb2afd547f5d094f61955ac # Parent ebc23d34102f6a01882ba215a21cbbd9b966a216 convert: added GNU Arch (tla) tests and related fixes diff -r ebc23d34102f -r ea34059b89de hgext/convert/gnuarch.py --- a/hgext/convert/gnuarch.py Tue Feb 12 10:38:34 2008 +0100 +++ b/hgext/convert/gnuarch.py Tue Feb 12 11:35:06 2008 +0100 @@ -227,6 +227,11 @@ files = self._readcontents(self.tmppath) self.changes[rev].add_files += files + def _stripbasepath(self, path): + if path.startswith('./'): + return path[2:] + return path + def _parsecatlog(self, data, rev): summary = [] for l in data: @@ -248,27 +253,27 @@ l = l.strip() # Added file (ignore added directory) if l.startswith('A') and not l.startswith('A/'): - file = l[1:].strip() + file = self._stripbasepath(l[1:].strip()) if not self._exclude(file): self.changes[rev].add_files.append(file) # Deleted file (ignore deleted directory) elif l.startswith('D') and not l.startswith('D/'): - file = l[1:].strip() + file = self._stripbasepath(l[1:].strip()) if not self._exclude(file): self.changes[rev].del_files.append(file) # Modified binary file elif l.startswith('Mb'): - file = l[2:].strip() + file = self._stripbasepath(l[2:].strip()) if not self._exclude(file): self.changes[rev].mod_files.append(file) # Modified link elif l.startswith('M->'): - file = l[3:].strip() + file = self._stripbasepath(l[3:].strip()) if not self._exclude(file): self.changes[rev].mod_files.append(file) # Modified file elif l.startswith('M'): - file = l[1:].strip() + file = self._stripbasepath(l[1:].strip()) if not self._exclude(file): self.changes[rev].mod_files.append(file) # Renamed file (or link) @@ -276,11 +281,13 @@ files = l[2:].strip().split(' ') if len(files) == 1: files = l[2:].strip().split('\t') - if not self._exclude(files[0]) and not self._exclude(files[1]): - self.changes[rev].ren_files[files[0]] = files[1] + src = self._stripbasepath(files[0]) + dst = self._stripbasepath(files[1]) + if not self._exclude(src) and not self._exclude(dst): + self.changes[rev].ren_files[src] = dst # Conversion from file to link or from link to file (modified) elif l.startswith('ch'): - file = l[2:].strip() + file = self._stripbasepath(l[2:].strip()) if not self._exclude(file): self.changes[rev].mod_files.append(file) # Renamed directory @@ -288,5 +295,7 @@ dirs = l[2:].strip().split(' ') if len(dirs) == 1: dirs = l[2:].strip().split('\t') - if not self._exclude(dirs[0]) and not self._exclude(dirs[1]): - self.changes[rev].ren_dirs[dirs[0]] = dirs[1] + src = self._stripbasepath(dirs[0]) + dst = self._stripbasepath(dirs[1]) + if not self._exclude(src) and not self._exclude(dst): + self.changes[rev].ren_dirs[src] = dst diff -r ebc23d34102f -r ea34059b89de tests/hghave --- a/tests/hghave Tue Feb 12 10:38:34 2008 +0100 +++ b/tests/hghave Tue Feb 12 11:35:06 2008 +0100 @@ -88,6 +88,9 @@ def has_symlink(): return hasattr(os, "symlink") +def has_tla(): + return matchoutput('tla --version 2>&1', r'The GNU Arch Revision') + def has_unix_permissions(): d = tempfile.mkdtemp(prefix=tempprefix, dir=".") try: @@ -118,6 +121,7 @@ "svn": (has_svn, "subversion client and admin tools"), "svn-bindings": (has_svn_bindings, "subversion python bindings"), "symlink": (has_symlink, "symbolic links"), + "tla": (has_tla, "GNU Arch tla client"), "unix-permissions": (has_unix_permissions, "unix-style permissions"), } diff -r ebc23d34102f -r ea34059b89de tests/test-convert-tla --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-tla Tue Feb 12 11:35:06 2008 +0100 @@ -0,0 +1,66 @@ +#!/bin/sh + +"$TESTDIR/hghave" tla || exit 80 + +echo "[extensions]" >> $HGRCPATH +echo "convert=" >> $HGRCPATH +echo 'hgext.graphlog =' >> $HGRCPATH + +echo % create tla archive +tla make-archive tla@mercurial--convert `pwd`/hg-test-convert-tla + +echo % initialize tla repo +mkdir tla-repo +cd tla-repo/ +tla init-tree tla@mercurial--convert/tla--test--0 +tla import + +echo % create initial files +echo 'this is a file' > a +tla add a +mkdir src +tla add src +cd src +dd count=1 if=/dev/zero of=b > /dev/null 2> /dev/null +tla add b +tla commit -s "added a file, src and src/b (binary)" + +echo % create link file and modify a +ln -s ../a a-link +tla add a-link +echo 'this a modification to a' >> ../a +tla commit -s "added link to a and modify a" + +echo % create second link and modify b +ln -s ../a a-link-2 +tla add a-link-2 +dd count=1 seek=1 if=/dev/zero of=b > /dev/null 2> /dev/null +tla 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 +tla commit -s "file to link and link to file test" + +echo % move a-link-2 file and src directory +cd .. +tla mv src/a-link-2 c +tla mv src test +tla commit -s "move and rename a-link-2 file and src directory" + +cd .. + +echo % converting tla repo to Mercurial +hg convert tla-repo tla-repo-hg + +tla register-archive -d tla@mercurial--convert + +glog() +{ + hg glog --template '#rev# "#desc|firstline#" files: #files#\n' "$@" +} + +echo % show graph log +glog -R tla-repo-hg +hg -R tla-repo-hg manifest --debug diff -r ebc23d34102f -r ea34059b89de tests/test-convert-tla.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-tla.out Tue Feb 12 11:35:06 2008 +0100 @@ -0,0 +1,72 @@ +% create tla archive +% initialize tla repo +* creating version tla@mercurial--convert/tla--test--0 +* imported tla@mercurial--convert/tla--test--0 +% create initial files +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 (tla@mercurial--convert/tla--test--0--base-0 => tla--test--0--patch-1) +* committed tla@mercurial--convert/tla--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 (tla@mercurial--convert/tla--test--0--patch-1 => tla--test--0--patch-2) +* committed tla@mercurial--convert/tla--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 (tla@mercurial--convert/tla--test--0--patch-2 => tla--test--0--patch-3) +* committed tla@mercurial--convert/tla--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 (tla@mercurial--convert/tla--test--0--patch-3 => tla--test--0--patch-4) +* committed tla@mercurial--convert/tla--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 (tla@mercurial--convert/tla--test--0--patch-4 => tla--test--0--patch-5) +* committed tla@mercurial--convert/tla--test--0--patch-5 +% converting tla repo to Mercurial +initializing destination tla-repo-hg repository +analyzing tree version tla@mercurial--convert/tla--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