diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-11-19 18:49:55 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-11-24 14:51:43 -0800 |
commit | 6ee4a9be48ee714ddacf313a7073dabdd6c6ee11 (patch) | |
tree | bfd567f89a2be9affd3994e54abf555984bcaefe /vcs-svn | |
parent | 5af8fae2df03d1888dbf315da29d1cdaa6214f57 (diff) | |
download | git-6ee4a9be48ee714ddacf313a7073dabdd6c6ee11.tar.gz git-6ee4a9be48ee714ddacf313a7073dabdd6c6ee11.tar.xz |
vcs-svn: Replace = Delete + Add
Simplify by reducing the "Node-action: replace" case to "Node-action:
add". This way, the main part of handle_node() only has to deal with
"add" and "change" nodes.
Functional change: replacing a symlink or executable without setting
properties will reset the mode.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'vcs-svn')
-rw-r--r-- | vcs-svn/svndump.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/vcs-svn/svndump.c b/vcs-svn/svndump.c index bc7002307..6a6aaf92b 100644 --- a/vcs-svn/svndump.c +++ b/vcs-svn/svndump.c @@ -166,6 +166,11 @@ static void handle_node(void) return repo_delete(node_ctx.dst); } + if (node_ctx.action == NODEACT_REPLACE) { + repo_delete(node_ctx.dst); + node_ctx.action = NODEACT_ADD; + } + if (have_props && node_ctx.propLength) read_props(); @@ -175,12 +180,8 @@ static void handle_node(void) if (mark && node_ctx.type == REPO_MODE_DIR) die("invalid dump: directories cannot have text attached"); - if (node_ctx.action == NODEACT_CHANGE || - node_ctx.action == NODEACT_REPLACE) { - if (node_ctx.action == NODEACT_REPLACE && - node_ctx.type == REPO_MODE_DIR) - repo_replace(node_ctx.dst, mark); - else if (have_props) + if (node_ctx.action == NODEACT_CHANGE) { + if (have_props) repo_modify(node_ctx.dst, node_ctx.type, mark); else if (mark) old_mode = repo_replace(node_ctx.dst, mark); |