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>
This commit is contained in:
parent
5af8fae2df
commit
6ee4a9be48
@ -166,6 +166,11 @@ static void handle_node(void)
|
|||||||
return repo_delete(node_ctx.dst);
|
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)
|
if (have_props && node_ctx.propLength)
|
||||||
read_props();
|
read_props();
|
||||||
|
|
||||||
@ -175,12 +180,8 @@ static void handle_node(void)
|
|||||||
if (mark && node_ctx.type == REPO_MODE_DIR)
|
if (mark && node_ctx.type == REPO_MODE_DIR)
|
||||||
die("invalid dump: directories cannot have text attached");
|
die("invalid dump: directories cannot have text attached");
|
||||||
|
|
||||||
if (node_ctx.action == NODEACT_CHANGE ||
|
if (node_ctx.action == NODEACT_CHANGE) {
|
||||||
node_ctx.action == NODEACT_REPLACE) {
|
if (have_props)
|
||||||
if (node_ctx.action == NODEACT_REPLACE &&
|
|
||||||
node_ctx.type == REPO_MODE_DIR)
|
|
||||||
repo_replace(node_ctx.dst, mark);
|
|
||||||
else if (have_props)
|
|
||||||
repo_modify(node_ctx.dst, node_ctx.type, mark);
|
repo_modify(node_ctx.dst, node_ctx.type, mark);
|
||||||
else if (mark)
|
else if (mark)
|
||||||
old_mode = repo_replace(node_ctx.dst, mark);
|
old_mode = repo_replace(node_ctx.dst, mark);
|
||||||
|
Loading…
Reference in New Issue
Block a user