diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-11-17 23:02:48 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-11-24 14:48:52 -0800 |
commit | b3e5bce1aa88721dd4565089960997836ce66add (patch) | |
tree | f116da9e6e8987c1587fa0f87c576579f39035ff /t/t9010-svn-fe.sh | |
parent | Merge branch 'jl/maint-pull-tags-doc' (diff) | |
download | tgif-b3e5bce1aa88721dd4565089960997836ce66add.tar.xz |
vcs-svn: Error out for v3 dumps
By ignoring the Text-Delta and Prop-Delta node fields, current svn-fe
happily mistakes deltas for full text and instead of cleanly erroring
out, it produces a valid but semantically bogus fast-import stream
when fed a dump file in the modern "svnadmin dump --deltas" format.
Dump file parsers are supposed to ignore header fields they don't
understand (to allow for backward-compatible extensions), but they are
also supposed to check the SVN-fs-dump-format-version header to
prevent misinterpretation of non backward-compatible extensions.
Do so.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t9010-svn-fe.sh')
-rwxr-xr-x | t/t9010-svn-fe.sh | 59 |
1 files changed, 37 insertions, 22 deletions
diff --git a/t/t9010-svn-fe.sh b/t/t9010-svn-fe.sh index a713dfc50b..e9e46ea0fe 100755 --- a/t/t9010-svn-fe.sh +++ b/t/t9010-svn-fe.sh @@ -4,29 +4,44 @@ test_description='check svn dumpfile importer' . ./lib-git-svn.sh -test_dump() { - label=$1 - dump=$2 - test_expect_success "$dump" ' - svnadmin create "$label-svn" && - svnadmin load "$label-svn" < "$TEST_DIRECTORY/$dump" && - svn_cmd export "file://$PWD/$label-svn" "$label-svnco" && - git init "$label-git" && - test-svn-fe "$TEST_DIRECTORY/$dump" >"$label.fe" && - ( - cd "$label-git" && - git fast-import < ../"$label.fe" - ) && - ( - cd "$label-svnco" && - git init && - git add . && - git fetch "../$label-git" master && - git diff --exit-code FETCH_HEAD - ) - ' +reinit_git () { + rm -fr .git && + git init } -test_dump simple t9135/svn.dump +>empty + +test_expect_success 'empty dump' ' + reinit_git && + echo "SVN-fs-dump-format-version: 2" >input && + test-svn-fe input >stream && + git fast-import <stream +' + +test_expect_success 'v3 dumps not supported' ' + reinit_git && + echo "SVN-fs-dump-format-version: 3" >input && + test_must_fail test-svn-fe input >stream && + test_cmp empty stream +' + +test_expect_success 't9135/svn.dump' ' + svnadmin create simple-svn && + svnadmin load simple-svn <"$TEST_DIRECTORY/t9135/svn.dump" && + svn_cmd export "file://$PWD/simple-svn" simple-svnco && + git init simple-git && + test-svn-fe "$TEST_DIRECTORY/t9135/svn.dump" >simple.fe && + ( + cd simple-git && + git fast-import <../simple.fe + ) && + ( + cd simple-svnco && + git init && + git add . && + git fetch ../simple-git master && + git diff --exit-code FETCH_HEAD + ) +' test_done |