summaryrefslogtreecommitdiff
path: root/entry.c
diff options
context:
space:
mode:
authorThomas Gummerer <t.gummerer@gmail.com>2018-12-20 13:48:14 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-01-02 23:28:05 (GMT)
commitb702dd12d52816e192578c6206db5e6c332ba49b (patch)
tree75999dad3b2d37c79cca7a1a4e1360544b08b119 /entry.c
parenta0cc58450a8ac81ba405f1e161599263d1678686 (diff)
downloadgit-b702dd12d52816e192578c6206db5e6c332ba49b.zip
git-b702dd12d52816e192578c6206db5e6c332ba49b.tar.gz
git-b702dd12d52816e192578c6206db5e6c332ba49b.tar.bz2
entry: factor out unlink_entry function
Factor out the 'unlink_entry()' function from unpack-trees.c to entry.c. It will be used in other places as well in subsequent steps. As it's no longer a static function, also move the documentation to the header file to make it more discoverable. Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'entry.c')
-rw-r--r--entry.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/entry.c b/entry.c
index 0a3c451..b9eef57 100644
--- a/entry.c
+++ b/entry.c
@@ -508,3 +508,18 @@ int checkout_entry(struct cache_entry *ce,
create_directories(path.buf, path.len, state);
return write_entry(ce, path.buf, state, 0);
}
+
+void unlink_entry(const struct cache_entry *ce)
+{
+ const struct submodule *sub = submodule_from_ce(ce);
+ if (sub) {
+ /* state.force is set at the caller. */
+ submodule_move_head(ce->name, "HEAD", NULL,
+ SUBMODULE_MOVE_HEAD_FORCE);
+ }
+ if (!check_leading_path(ce->name, ce_namelen(ce)))
+ return;
+ if (remove_or_warn(ce->ce_mode, ce->name))
+ return;
+ schedule_dir_for_removal(ce->name, ce_namelen(ce));
+}