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>
This commit is contained in:
Jonathan Nieder 2010-11-19 18:52:59 -06:00 committed by Junio C Hamano
parent 1c7bb31616
commit 414e569e45
2 changed files with 25 additions and 2 deletions

View File

@ -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 &&

View File

@ -174,6 +174,7 @@ static void handle_node(void)
if (node_ctx.srcRev) {
repo_copy(node_ctx.srcRev, node_ctx.src, node_ctx.dst);
if (node_ctx.action == NODEACT_ADD)
node_ctx.action = NODEACT_CHANGE;
}
@ -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;