@@ -941,7 +941,23 @@ static void get_provisional_directory_renames(struct merge_options *opt,
static void handle_directory_level_conflicts(struct merge_options *opt)
{
- die("Not yet implemented!");
+ struct hashmap_iter iter;
+ struct strmap_entry *entry;
+ struct string_list duplicated = STRING_LIST_INIT_NODUP;
+ struct strmap *side1_dir_renames = &opt->priv->renames.dir_renames[1];
+ struct strmap *side2_dir_renames = &opt->priv->renames.dir_renames[2];
+ int i;
+
+ strmap_for_each_entry(side1_dir_renames, &iter, entry) {
+ if (strmap_contains(side2_dir_renames, entry->key))
+ string_list_append(&duplicated, entry->key);
+ }
+
+ for (i=0; i<duplicated.nr; ++i) {
+ strmap_remove(side1_dir_renames, duplicated.items[i].string, 0);
+ strmap_remove(side2_dir_renames, duplicated.items[i].string, 0);
+ }
+ string_list_clear(&duplicated, 0);
}
/*** Function Grouping: functions related to regular rename detection ***/