]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge-ort: add outline for computing directory renames
authorElijah Newren <newren@gmail.com>
Tue, 19 Jan 2021 19:53:40 +0000 (19:53 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 21 Jan 2021 06:18:55 +0000 (22:18 -0800)
Port some directory rename handling changes from merge-recursive.c's
detect_and_process_renames() to the same-named function of merge-ort.c.
This does not yet add any use or handling of directory renames, just the
outline for where we start to compute them.  Thus, a future patch will
add port additional changes to merge-ort's detect_and_process_renames().

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-ort.c

index 999a7c91c52de9c400d01ebc951d935846659a35..b4c1fe28a5c8bfdd18b1e1229be0503742e41cc3 100644 (file)
@@ -721,6 +721,18 @@ static int handle_content_merge(struct merge_options *opt,
 
 /*** Function Grouping: functions related to directory rename detection ***/
 
+static void get_provisional_directory_renames(struct merge_options *opt,
+                                             unsigned side,
+                                             int *clean)
+{
+       die("Not yet implemented!");
+}
+
+static void handle_directory_level_conflicts(struct merge_options *opt)
+{
+       die("Not yet implemented!");
+}
+
 /*** Function Grouping: functions related to regular rename detection ***/
 
 static int process_renames(struct merge_options *opt,
@@ -1086,13 +1098,24 @@ static int detect_and_process_renames(struct merge_options *opt,
 {
        struct diff_queue_struct combined;
        struct rename_info *renames = &opt->priv->renames;
-       int s, clean = 1;
+       int need_dir_renames, s, clean = 1;
 
        memset(&combined, 0, sizeof(combined));
 
        detect_regular_renames(opt, merge_base, side1, MERGE_SIDE1);
        detect_regular_renames(opt, merge_base, side2, MERGE_SIDE2);
 
+       need_dir_renames =
+         !opt->priv->call_depth &&
+         (opt->detect_directory_renames == MERGE_DIRECTORY_RENAMES_TRUE ||
+          opt->detect_directory_renames == MERGE_DIRECTORY_RENAMES_CONFLICT);
+
+       if (need_dir_renames) {
+               get_provisional_directory_renames(opt, MERGE_SIDE1, &clean);
+               get_provisional_directory_renames(opt, MERGE_SIDE2, &clean);
+               handle_directory_level_conflicts(opt);
+       }
+
        ALLOC_GROW(combined.queue,
                   renames->pairs[1].nr + renames->pairs[2].nr,
                   combined.alloc);