diff --git a/libnemo-private/nemo-file-operations.c b/libnemo-private/nemo-file-operations.c
index 7107e9374..1a239f6ce 100644
--- a/libnemo-private/nemo-file-operations.c
+++ b/libnemo-private/nemo-file-operations.c
@@ -4398,6 +4398,16 @@ get_target_file_for_display_name (GFile *dir,
return dest;
}
+static gboolean
+should_always_merge_dirs (void)
+{
+ gboolean confirm_merge;
+
+ confirm_merge = g_settings_get_boolean (nemo_preferences, NEMO_PREFERENCES_ALWAYS_MERGE_DIRS);
+
+ return confirm_merge;
+}
+
/* Debuting files is non-NULL only for toplevel items */
static void
copy_move_file (CopyMoveJob *copy_job,
@@ -4665,6 +4675,10 @@ copy_move_file (CopyMoveJob *copy_job,
is_a_merge = TRUE;
}
+ if (is_a_merge && should_always_merge_dirs()) {
+ job->merge_all = TRUE;
+ }
+
if ((is_a_merge && job->merge_all) ||
(!is_a_merge && job->replace_all)) {
overwrite = TRUE;
@@ -5338,6 +5352,10 @@ move_file_prepare (CopyMoveJob *move_job,
is_merge = TRUE;
}
+ if (is_merge && should_always_merge_dirs()) {
+ job->merge_all = TRUE;
+ }
+
if ((is_merge && job->merge_all) ||
(!is_merge && job->replace_all)) {
overwrite = TRUE;
diff --git a/libnemo-private/nemo-global-preferences.h b/libnemo-private/nemo-global-preferences.h
index 91f404854..5f1448115 100644
--- a/libnemo-private/nemo-global-preferences.h
+++ b/libnemo-private/nemo-global-preferences.h
@@ -36,6 +36,9 @@ G_BEGIN_DECLS
#define NEMO_PREFERENCES_ENABLE_DELETE "enable-delete"
#define NEMO_PREFERENCES_SWAP_TRASH_DELETE "swap-trash-delete"
+/* Conflic Behavior */
+#define NEMO_PREFERENCES_ALWAYS_MERGE_DIRS "always-merge-directories"
+
/* Desktop options */
#define NEMO_PREFERENCES_DESKTOP_IS_HOME_DIR "desktop-is-home-dir"
diff --git a/libnemo-private/org.nemo.gschema.xml b/libnemo-private/org.nemo.gschema.xml
index abc2814d4..b0b336afc 100644
--- a/libnemo-private/org.nemo.gschema.xml
+++ b/libnemo-private/org.nemo.gschema.xml
@@ -206,6 +206,11 @@
Whether to swap the hotkeys for Trash and Delete
If set to true, the Delete key will permanently delete a file, and the Shift-Delete key will only trash a file.
+
+ false
+ Whether to automatically resolve conflicts between two directories by merging them.
+ If set to true, a file conflict between two directories will always automatically be resolved to "Merge", rather than "Skip" or "Duplicate".
+
'local-only'