diff options
author | Thomas Gummerer <t.gummerer@gmail.com> | 2018-12-20 16:48:14 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-01-03 02:28:05 +0300 |
commit | b702dd12d52816e192578c6206db5e6c332ba49b (patch) | |
tree | 75999dad3b2d37c79cca7a1a4e1360544b08b119 /entry.c | |
parent | a0cc58450a8ac81ba405f1e161599263d1678686 (diff) |
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.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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)); +} |