diff --git a/replay.pl b/replay.pl index d0a4357..72fcf1e 100755 --- a/replay.pl +++ b/replay.pl @@ -57,6 +57,8 @@ } if ($root->is_dir($file, $pool) ) { + my $path = substr($file, 1); + print $commitlog "D $path\n"; modifydir($root, $file, $pool); } else { modifyfile($root, $file, $pool); diff --git a/svndump.c b/svndump.c index 8d58e81..8d13e2b 100644 --- a/svndump.c +++ b/svndump.c @@ -172,7 +172,10 @@ static void handle_node(void) repo_delete(node_ctx.dst); } else if (node_ctx.action == NODEACT_CHANGE || node_ctx.action == NODEACT_REPLACE) { - if (node_ctx.propLength != LENGTH_UNKNOWN) { + if (node_ctx.action == NODEACT_REPLACE && + node_ctx.type == REPO_MODE_DIR) { + repo_replace(node_ctx.dst, node_ctx.mark); + } else if (node_ctx.propLength != LENGTH_UNKNOWN ) { repo_modify(node_ctx.dst, node_ctx.type, node_ctx.mark); } else if (node_ctx.textLength != LENGTH_UNKNOWN) { node_ctx.srcMode = repo_replace(node_ctx.dst, node_ctx.mark);