Mercurial > public > mercurial-scm > hg-stable
diff tests/test-convert-svn-sink.t @ 12370:f98010f57a5e
tests: unify test-convert-svn-*
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Tue, 21 Sep 2010 18:40:33 +0200 |
parents | tests/test-convert-svn-sink@28642f7fc2cf |
children | 43b3b761d9d1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-svn-sink.t Tue Sep 21 18:40:33 2010 +0200 @@ -0,0 +1,548 @@ + + $ "$TESTDIR/hghave" svn svn-bindings no-outer-repo || exit 80 + + $ fixpath() + > { + > tr '\\' / + > } + $ svnupanddisplay() + > { + > ( + > cd $1; + > svn up; + > svn st -v | fixpath | sed 's/ */ /g' + > limit='' + > if [ $2 -gt 0 ]; then + > limit="--limit=$2" + > fi + > svn log --xml -v $limit \ + > | fixpath \ + > | sed 's,<date>.*,<date/>,' \ + > | grep -v 'kind="' + > ) + > } + + $ 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 + $ ln -s a/missing a/link + $ hg --cwd a ci -d '0 0' -A -m 'add a file' + adding a + adding d1/d2/b + adding link + +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:8231f652da37 + + $ 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 + At revision 2. + 2 2 test . + 2 2 test a + 2 1 test d1 + 2 1 test d1/d2 + 2 1 test d1/d2/b + 2 1 test link + <?xml version="1.0"?> + <log> + <logentry + revision="2"> + <author>test</author> + <date/> + <paths> + <path + action="M">/a</path> + </paths> + <msg>modify a file</msg> + </logentry> + <logentry + revision="1"> + <author>test</author> + <date/> + <paths> + <path + action="A">/a</path> + <path + action="A">/d1</path> + <path + action="A">/d1/d2</path> + <path + action="A">/d1/d2/b</path> + <path + action="A">/link</path> + </paths> + <msg>add a file</msg> + </logentry> + </log> + $ ls a a-hg-wc + a: + a + d1 + link + + a-hg-wc: + a + d1 + link + $ cmp a/a a-hg-wc/a + +Rename + + $ hg --cwd a mv a b + $ hg --cwd a mv link newlink + + $ hg --cwd a ci -d '2 0' -m 'rename a file' + $ hg --cwd a tip -q + 2:a67e26ccec09 + + $ 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 + At revision 3. + 3 3 test . + 3 3 test b + 3 1 test d1 + 3 1 test d1/d2 + 3 1 test d1/d2/b + 3 3 test newlink + <?xml version="1.0"?> + <log> + <logentry + revision="3"> + <author>test</author> + <date/> + <paths> + <path + action="D">/a</path> + <path + copyfrom-path="/a" + copyfrom-rev="2" + action="A">/b</path> + <path + copyfrom-path="/link" + copyfrom-rev="2" + action="A">/newlink</path> + <path + action="D">/link</path> + </paths> + <msg>rename a file</msg> + </logentry> + </log> + $ ls a a-hg-wc + a: + b + d1 + newlink + + a-hg-wc: + b + d1 + newlink + +Copy + + $ hg --cwd a cp b c + + $ hg --cwd a ci -d '3 0' -m 'copy a file' + $ hg --cwd a tip -q + 3:0cf087b9ab02 + + $ 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 + At revision 4. + 4 4 test . + 4 3 test b + 4 4 test c + 4 1 test d1 + 4 1 test d1/d2 + 4 1 test d1/d2/b + 4 3 test newlink + <?xml version="1.0"?> + <log> + <logentry + revision="4"> + <author>test</author> + <date/> + <paths> + <path + copyfrom-path="/b" + copyfrom-rev="3" + action="A">/c</path> + </paths> + <msg>copy a file</msg> + </logentry> + </log> + $ ls a a-hg-wc + a: + b + c + d1 + newlink + + a-hg-wc: + b + c + d1 + newlink + + $ hg --cwd a rm b + $ echo % remove + % remove + $ hg --cwd a ci -d '4 0' -m 'remove a file' + $ hg --cwd a tip -q + 4:07b2e34a5b17 + + $ 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 + At revision 5. + 5 5 test . + 5 4 test c + 5 1 test d1 + 5 1 test d1/d2 + 5 1 test d1/d2/b + 5 3 test newlink + <?xml version="1.0"?> + <log> + <logentry + revision="5"> + <author>test</author> + <date/> + <paths> + <path + action="D">/b</path> + </paths> + <msg>remove a file</msg> + </logentry> + </log> + $ ls a a-hg-wc + a: + c + d1 + newlink + + a-hg-wc: + c + d1 + newlink + +Exectutable + + $ chmod +x a/c + $ hg --cwd a ci -d '5 0' -m 'make a file executable' + $ hg --cwd a tip -q + 5:31093672760b + + $ 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 + At revision 6. + 6 6 test . + 6 6 test c + 6 1 test d1 + 6 1 test d1/d2 + 6 1 test d1/d2/b + 6 3 test newlink + <?xml version="1.0"?> + <log> + <logentry + revision="6"> + <author>test</author> + <date/> + <paths> + <path + action="M">/c</path> + </paths> + <msg>make a file executable</msg> + </logentry> + </log> + $ test -x a-hg-wc/c + +Executable in new directory + + $ rm -rf a a-hg a-hg-wc + $ hg init a + + $ mkdir a/d1 + $ echo a > a/d1/a + $ chmod +x a/d1/a + $ 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 + At revision 1. + 1 1 test . + 1 1 test d1 + 1 1 test d1/a + <?xml version="1.0"?> + <log> + <logentry + revision="1"> + <author>test</author> + <date/> + <paths> + <path + action="A">/d1</path> + <path + action="A">/d1/a</path> + </paths> + <msg>add executable file in new directory</msg> + </logentry> + </log> + $ test -x a-hg-wc/d1/a + +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 + At revision 2. + 2 2 test . + 2 1 test d1 + 2 1 test d1/a + 2 2 test d2 + 2 2 test d2/a + <?xml version="1.0"?> + <log> + <logentry + revision="2"> + <author>test</author> + <date/> + <paths> + <path + action="A">/d2</path> + <path + copyfrom-path="/d1/a" + copyfrom-rev="1" + action="A">/d2/a</path> + </paths> + <msg>copy file to new directory</msg> + </logentry> + </log> + +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 failed! + 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 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 + At revision 4. + 4 4 test . + 4 3 test b + 4 2 test left-1 + 4 3 test left-2 + 4 4 test right-1 + 4 4 test right-2 + <?xml version="1.0"?> + <log> + <logentry + revision="4"> + <author>test</author> + <date/> + <paths> + <path + action="A">/right-1</path> + <path + action="A">/right-2</path> + </paths> + <msg>merge</msg> + </logentry> + <logentry + revision="3"> + <author>test</author> + <date/> + <paths> + <path + action="M">/b</path> + <path + action="A">/left-2</path> + </paths> + <msg>left-2</msg> + </logentry> + <logentry + revision="2"> + <author>test</author> + <date/> + <paths> + <path + action="M">/b</path> + <path + action="A">/left-1</path> + </paths> + <msg>left-1</msg> + </logentry> + <logentry + revision="1"> + <author>test</author> + <date/> + <paths> + <path + action="A">/b</path> + </paths> + <msg>base</msg> + </logentry> + </log> + +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 + At revision 2. + 2 2 test . + 2 1 test a + 2 2 test .hgtags + <?xml version="1.0"?> + <log> + <logentry + revision="2"> + <author>test</author> + <date/> + <paths> + <path + action="A">/.hgtags</path> + </paths> + <msg>Tagged as v1.0</msg> + </logentry> + <logentry + revision="1"> + <author>test</author> + <date/> + <paths> + <path + action="A">/a</path> + </paths> + <msg>Add file a</msg> + </logentry> + </log> + $ rm -rf a a-hg a-hg-wc