aboutsummaryrefslogtreecommitdiff
path: root/t/t9010-svn-fe.sh
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2010-11-17 23:02:48 -0600
committerJunio C Hamano <gitster@pobox.com>2010-11-24 14:48:52 -0800
commitb3e5bce1aa88721dd4565089960997836ce66add (patch)
treef116da9e6e8987c1587fa0f87c576579f39035ff /t/t9010-svn-fe.sh
parent03276d94bcdb7d463a029936933898948c0669ac (diff)
downloadgit-b3e5bce1aa88721dd4565089960997836ce66add.tar.gz
git-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-xt/t9010-svn-fe.sh59
1 files changed, 37 insertions, 22 deletions
diff --git a/t/t9010-svn-fe.sh b/t/t9010-svn-fe.sh
index a713dfc50..e9e46ea0f 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