diff options
Diffstat (limited to 'tests/test-convert-svn-sink.t')
-rw-r--r-- | tests/test-convert-svn-sink.t | 432 |
1 files changed, 432 insertions, 0 deletions
diff --git a/tests/test-convert-svn-sink.t b/tests/test-convert-svn-sink.t new file mode 100644 index 0000000..ab39f7f --- /dev/null +++ b/tests/test-convert-svn-sink.t @@ -0,0 +1,432 @@ + $ "$TESTDIR/hghave" svn13 || exit 80 + + $ svnupanddisplay() + > { + > ( + > cd $1; + > svn up -q; + > svn st -v | sed 's/ */ /g' | sort + > limit='' + > if [ $2 -gt 0 ]; then + > limit="--limit=$2" + > fi + > svn log --xml -v $limit | python "$TESTDIR/svnxml.py" + > ) + > } + + $ cat >> $HGRCPATH <<EOF + > [extensions] + > convert = + > graphlog = + > EOF + + $ hg init a + +Add + + $ echo a > a/a + $ mkdir -p a/d1/d2 + $ echo b > a/d1/d2/b + $ hg --cwd a ci -d '0 0' -A -m 'add a file' + adding a + adding d1/d2/b + +Modify + + $ "$TESTDIR/svn-safe-append.py" a a/a + $ hg --cwd a ci -d '1 0' -m 'modify a file' + $ hg --cwd a tip -q + 1:e0e2b8a9156b + + $ hg convert -d svn a + assuming destination a-hg + initializing svn repository 'a-hg' + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 1 add a file + 0 modify a file + $ svnupanddisplay a-hg-wc 2 + 2 1 test d1 + 2 1 test d1/d2 (glob) + 2 1 test d1/d2/b (glob) + 2 2 test . + 2 2 test a + revision: 2 + author: test + msg: modify a file + M /a + revision: 1 + author: test + msg: add a file + A /a + A /d1 + A /d1/d2 + A /d1/d2/b + $ ls a a-hg-wc + a: + a + d1 + + a-hg-wc: + a + d1 + $ cmp a/a a-hg-wc/a + +Rename + + $ hg --cwd a mv a b + $ hg --cwd a ci -d '2 0' -m 'rename a file' + $ hg --cwd a tip -q + 2:eb5169441d43 + + $ hg convert -d svn a + assuming destination a-hg + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 0 rename a file + $ svnupanddisplay a-hg-wc 1 + 3 1 test d1 + 3 1 test d1/d2 (glob) + 3 1 test d1/d2/b (glob) + 3 3 test . + 3 3 test b + revision: 3 + author: test + msg: rename a file + D /a + A /b (from /a@2) + $ ls a a-hg-wc + a: + b + d1 + + a-hg-wc: + b + d1 + +Copy + + $ hg --cwd a cp b c + + $ hg --cwd a ci -d '3 0' -m 'copy a file' + $ hg --cwd a tip -q + 3:60effef6ab48 + + $ hg convert -d svn a + assuming destination a-hg + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 0 copy a file + $ svnupanddisplay a-hg-wc 1 + 4 1 test d1 + 4 1 test d1/d2 (glob) + 4 1 test d1/d2/b (glob) + 4 3 test b + 4 4 test . + 4 4 test c + revision: 4 + author: test + msg: copy a file + A /c (from /b@3) + $ ls a a-hg-wc + a: + b + c + d1 + + a-hg-wc: + b + c + d1 + + $ hg --cwd a rm b + +Remove + + $ hg --cwd a ci -d '4 0' -m 'remove a file' + $ hg --cwd a tip -q + 4:87bbe3013fb6 + + $ hg convert -d svn a + assuming destination a-hg + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 0 remove a file + $ svnupanddisplay a-hg-wc 1 + 5 1 test d1 + 5 1 test d1/d2 (glob) + 5 1 test d1/d2/b (glob) + 5 4 test c + 5 5 test . + revision: 5 + author: test + msg: remove a file + D /b + $ ls a a-hg-wc + a: + c + d1 + + a-hg-wc: + c + d1 + +Executable + +#if execbit + $ chmod +x a/c +#else + $ echo fake >> a/c +#endif + $ hg --cwd a ci -d '5 0' -m 'make a file executable' +#if execbit + $ hg --cwd a tip -q + 5:ff42e473c340 +#else + $ hg --cwd a tip -q + 5:817a700c8cf1 +#endif + + $ hg convert -d svn a + assuming destination a-hg + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 0 make a file executable + $ svnupanddisplay a-hg-wc 1 + 6 1 test d1 + 6 1 test d1/d2 (glob) + 6 1 test d1/d2/b (glob) + 6 6 test . + 6 6 test c + revision: 6 + author: test + msg: make a file executable + M /c +#if execbit + $ test -x a-hg-wc/c +#endif + +#if symlink + +Symlinks + + $ ln -s a/missing a/link + $ hg --cwd a commit -Am 'add symlink' + adding link + $ hg --cwd a mv link newlink + $ hg --cwd a commit -m 'move symlink' + $ hg convert -d svn a + assuming destination a-hg + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 1 add symlink + 0 move symlink + $ svnupanddisplay a-hg-wc 1 + 8 1 test d1 + 8 1 test d1/d2 + 8 1 test d1/d2/b + 8 6 test c + 8 8 test . + 8 8 test newlink + revision: 8 + author: test + msg: move symlink + D /link + A /newlink (from /link@7) + +#endif + + $ rm -rf a a-hg a-hg-wc + + +Executable in new directory + + $ hg init a + + $ mkdir a/d1 + $ echo a > a/d1/a +#if execbit + $ chmod +x a/d1/a +#else + $ echo fake >> a/d1/a +#endif + $ hg --cwd a ci -d '0 0' -A -m 'add executable file in new directory' + adding d1/a + + $ hg convert -d svn a + assuming destination a-hg + initializing svn repository 'a-hg' + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 0 add executable file in new directory + $ svnupanddisplay a-hg-wc 1 + 1 1 test . + 1 1 test d1 + 1 1 test d1/a (glob) + revision: 1 + author: test + msg: add executable file in new directory + A /d1 + A /d1/a +#if execbit + $ test -x a-hg-wc/d1/a +#endif + +Copy to new directory + + $ mkdir a/d2 + $ hg --cwd a cp d1/a d2/a + $ hg --cwd a ci -d '1 0' -A -m 'copy file to new directory' + + $ hg convert -d svn a + assuming destination a-hg + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 0 copy file to new directory + $ svnupanddisplay a-hg-wc 1 + 2 1 test d1 + 2 1 test d1/a (glob) + 2 2 test . + 2 2 test d2 + 2 2 test d2/a (glob) + revision: 2 + author: test + msg: copy file to new directory + A /d2 + A /d2/a (from /d1/a@1) + +Branchy history + + $ hg init b + $ echo base > b/b + $ hg --cwd b ci -d '0 0' -Ambase + adding b + + $ "$TESTDIR/svn-safe-append.py" left-1 b/b + $ echo left-1 > b/left-1 + $ hg --cwd b ci -d '1 0' -Amleft-1 + adding left-1 + + $ "$TESTDIR/svn-safe-append.py" left-2 b/b + $ echo left-2 > b/left-2 + $ hg --cwd b ci -d '2 0' -Amleft-2 + adding left-2 + + $ hg --cwd b up 0 + 1 files updated, 0 files merged, 2 files removed, 0 files unresolved + + $ "$TESTDIR/svn-safe-append.py" right-1 b/b + $ echo right-1 > b/right-1 + $ hg --cwd b ci -d '3 0' -Amright-1 + adding right-1 + created new head + + $ "$TESTDIR/svn-safe-append.py" right-2 b/b + $ echo right-2 > b/right-2 + $ hg --cwd b ci -d '4 0' -Amright-2 + adding right-2 + + $ hg --cwd b up -C 2 + 3 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg --cwd b merge + merging b + warning: conflicts during merge. + merging b incomplete! (edit conflicts, then use 'hg resolve --mark') + 2 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ hg --cwd b revert -r 2 b + $ hg --cwd b resolve -m b + $ hg --cwd b ci -d '5 0' -m 'merge' + +Expect 4 changes + + $ hg convert -d svn b + assuming destination b-hg + initializing svn repository 'b-hg' + initializing svn working copy 'b-hg-wc' + scanning source... + sorting... + converting... + 5 base + 4 left-1 + 3 left-2 + 2 right-1 + 1 right-2 + 0 merge + + $ svnupanddisplay b-hg-wc 0 + 4 2 test left-1 + 4 3 test b + 4 3 test left-2 + 4 4 test . + 4 4 test right-1 + 4 4 test right-2 + revision: 4 + author: test + msg: merge + A /right-1 + A /right-2 + revision: 3 + author: test + msg: left-2 + M /b + A /left-2 + revision: 2 + author: test + msg: left-1 + M /b + A /left-1 + revision: 1 + author: test + msg: base + A /b + +Tags are not supported, but must not break conversion + + $ rm -rf a a-hg a-hg-wc + $ hg init a + $ echo a > a/a + $ hg --cwd a ci -d '0 0' -A -m 'Add file a' + adding a + $ hg --cwd a tag -d '1 0' -m 'Tagged as v1.0' v1.0 + + $ hg convert -d svn a + assuming destination a-hg + initializing svn repository 'a-hg' + initializing svn working copy 'a-hg-wc' + scanning source... + sorting... + converting... + 1 Add file a + 0 Tagged as v1.0 + writing Subversion tags is not yet implemented + $ svnupanddisplay a-hg-wc 2 + 2 1 test a + 2 2 test . + 2 2 test .hgtags + revision: 2 + author: test + msg: Tagged as v1.0 + A /.hgtags + revision: 1 + author: test + msg: Add file a + A /a + $ rm -rf a a-hg a-hg-wc |