Browse Source

vcs-svn: Reject path nodes without Node-action

It would be better to flag such errors and let the import proceed
anyway, but for now it is simpler not to worry about recovery
from such weird cases.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jonathan Nieder 14 years ago committed by Junio C Hamano
parent
commit
414e569e45
  1. 20
      t/t9010-svn-fe.sh
  2. 7
      vcs-svn/svndump.c

20
t/t9010-svn-fe.sh

@ -252,6 +252,26 @@ test_expect_success 'directory with files' ' @@ -252,6 +252,26 @@ test_expect_success 'directory with files' '
test_cmp hi directory/file2
'

test_expect_success 'node without action' '
cat >inaction.dump <<-\EOF &&
SVN-fs-dump-format-version: 3

Revision-number: 1
Prop-content-length: 10
Content-length: 10

PROPS-END

Node-path: directory
Node-kind: dir
Prop-content-length: 10
Content-length: 10

PROPS-END
EOF
test_must_fail test-svn-fe inaction.dump
'

test_expect_failure 'change file mode but keep old content' '
reinit_git &&
cat >expect <<-\EOF &&

7
vcs-svn/svndump.c

@ -174,7 +174,8 @@ static void handle_node(void) @@ -174,7 +174,8 @@ static void handle_node(void)

if (node_ctx.srcRev) {
repo_copy(node_ctx.srcRev, node_ctx.src, node_ctx.dst);
node_ctx.action = NODEACT_CHANGE;
if (node_ctx.action == NODEACT_ADD)
node_ctx.action = NODEACT_CHANGE;
}

if (mark && type == REPO_MODE_DIR)
@ -182,8 +183,10 @@ static void handle_node(void) @@ -182,8 +183,10 @@ static void handle_node(void)

if (node_ctx.action == NODEACT_CHANGE)
node_ctx.type = repo_modify_path(node_ctx.dst, 0, mark);
else /* Node-action: add */
else if (node_ctx.action == NODEACT_ADD)
repo_add(node_ctx.dst, type, mark);
else
die("invalid dump: Node-path block lacks Node-action");

if (have_props) {
const uint32_t old_mode = node_ctx.type;

Loading…
Cancel
Save