--- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs Mon May 10 21:31:05 2021 +0200
+++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs Mon May 10 21:59:13 2021 +0200
@@ -379,9 +379,14 @@
had_entry: node.entry.take().is_some(),
had_copy_source: node.copy_source.take().is_some(),
};
- // TODO: this leaves in the tree a "non-file" node. Should we
- // remove the node instead, together with ancestor nodes for
- // directories that become empty?
+ }
+ // After recursion, for both leaf (rest_of_path is None) nodes and
+ // parent nodes, remove a node if it just became empty.
+ if node.entry.is_none()
+ && node.copy_source.is_none()
+ && node.children.is_empty()
+ {
+ nodes.remove(first_path_component);
}
Some(dropped)
}