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 коммит произвёл Junio C Hamano
Родитель 1c7bb31616
Коммит 414e569e45
2 изменённых файлов: 25 добавлений и 2 удалений

Просмотреть файл

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

Просмотреть файл

@ -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)
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;