merge-ort: add new data structures for directory rename detection
Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8f894b2263
commit
c09376d55f
34
merge-ort.c
34
merge-ort.c
@ -49,14 +49,42 @@ enum merge_side {
|
||||
};
|
||||
|
||||
struct rename_info {
|
||||
/*
|
||||
* All variables that are arrays of size 3 correspond to data tracked
|
||||
* for the sides in enum merge_side. Index 0 is almost always unused
|
||||
* because we often only need to track information for MERGE_SIDE1 and
|
||||
* MERGE_SIDE2 (MERGE_BASE can't have rename information since renames
|
||||
* are determined relative to what changed since the MERGE_BASE).
|
||||
*/
|
||||
|
||||
/*
|
||||
* pairs: pairing of filenames from diffcore_rename()
|
||||
*
|
||||
* Index 1 and 2 correspond to sides 1 & 2 as used in
|
||||
* conflict_info.stages. Index 0 unused.
|
||||
*/
|
||||
struct diff_queue_struct pairs[3];
|
||||
|
||||
/*
|
||||
* dirs_removed: directories removed on a given side of history.
|
||||
*/
|
||||
struct strset dirs_removed[3];
|
||||
|
||||
/*
|
||||
* dir_rename_count: tracking where parts of a directory were renamed to
|
||||
*
|
||||
* When files in a directory are renamed, they may not all go to the
|
||||
* same location. Each strmap here tracks:
|
||||
* old_dir => {new_dir => int}
|
||||
* That is, dir_rename_count[side] is a strmap to a strintmap.
|
||||
*/
|
||||
struct strmap dir_rename_count[3];
|
||||
|
||||
/*
|
||||
* dir_renames: computed directory renames
|
||||
*
|
||||
* This is a map of old_dir => new_dir and is derived in part from
|
||||
* dir_rename_count.
|
||||
*/
|
||||
struct strmap dir_renames[3];
|
||||
|
||||
/*
|
||||
* needed_limit: value needed for inexact rename detection to run
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user