1
0
mirror of https://github.com/git/git synced 2024-07-02 15:48:44 +00:00

merge-ort: collect which directories are removed in dirs_removed

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2021-01-07 21:35:51 +00:00 committed by Junio C Hamano
parent f5d9fbc2e9
commit eb3e3e1ddf

View File

@ -480,6 +480,27 @@ static void setup_path_info(struct merge_options *opt,
result->util = mi;
}
static void collect_rename_info(struct merge_options *opt,
struct name_entry *names,
const char *dirname,
const char *fullname,
unsigned filemask,
unsigned dirmask,
unsigned match_mask)
{
struct rename_info *renames = &opt->priv->renames;
/* Update dirs_removed, as needed */
if (dirmask == 1 || dirmask == 3 || dirmask == 5) {
/* absent_mask = 0x07 - dirmask; sides = absent_mask/2 */
unsigned sides = (0x07 - dirmask)/2;
if (sides & 1)
strset_add(&renames->dirs_removed[1], fullname);
if (sides & 2)
strset_add(&renames->dirs_removed[2], fullname);
}
}
static int collect_merge_info_callback(int n,
unsigned long mask,
unsigned long dirmask,
@ -580,6 +601,12 @@ static int collect_merge_info_callback(int n,
return mask;
}
/*
* Gather additional information used in rename detection.
*/
collect_rename_info(opt, names, dirname, fullpath,
filemask, dirmask, match_mask);
/*
* Record information about the path so we can resolve later in
* process_entries.