зеркало из https://github.com/microsoft/git.git
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:
Родитель
f5d9fbc2e9
Коммит
eb3e3e1ddf
27
merge-ort.c
27
merge-ort.c
|
@ -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.
|
||||
|
|
Загрузка…
Ссылка в новой задаче