diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 97baf09..0a3e637 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -9,6 +9,7 @@ export interface GitHubSyncSettings { syncOnStartup: boolean; syncConfigDir: boolean; conflictHandling: "overwriteLocal" | "ask" | "overwriteRemote"; + autoResolveLogConflicts: boolean; conflictViewMode: "default" | "unified" | "split"; showStatusBarItem: boolean; showSyncRibbonButton: boolean; @@ -27,6 +28,7 @@ export const DEFAULT_SETTINGS: GitHubSyncSettings = { syncOnStartup: false, syncConfigDir: false, conflictHandling: "ask", + autoResolveLogConflicts: true, conflictViewMode: "default", showStatusBarItem: true, showSyncRibbonButton: true, diff --git a/src/settings/tab.ts b/src/settings/tab.ts index 8921460..0eccb27 100644 --- a/src/settings/tab.ts +++ b/src/settings/tab.ts @@ -189,6 +189,20 @@ export default class GitHubSyncSettingsTab extends PluginSettingTab { }); }); + new Setting(containerEl) + .setName("Automatically resolve conflits in logs") + .setDesc( + "Automatically resolves conflits in this plugin's logs prioritizing the local file", + ) + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.autoResolveLogConflicts) + .onChange(async (value) => { + this.plugin.settings.autoResolveLogConflicts = value; + await this.plugin.saveSettings(); + }); + }); + new Setting(containerEl).setName("Interface").setHeading(); new Setting(containerEl) diff --git a/src/sync-manager.ts b/src/sync-manager.ts index a073ae9..9358313 100644 --- a/src/sync-manager.ts +++ b/src/sync-manager.ts @@ -452,8 +452,11 @@ export default class SyncManager { // commit the sync. let conflictResolutions: ConflictResolution[] = []; - const logConflictResolutions = conflicts - .filter((conflict) => this.isLogFile(conflict.filePath)) + const autoResolvableLogConflicts = this.settings.autoResolveLogConflicts + ? conflicts.filter((conflict) => this.isLogFile(conflict.filePath)) + : []; + + const logConflictResolutions = autoResolvableLogConflicts .map((conflict) => ({ filePath: conflict.filePath, content: conflict.localContent, @@ -474,7 +477,9 @@ export default class SyncManager { } const remainingConflicts = conflicts.filter( - (conflict) => !this.isLogFile(conflict.filePath), + (conflict) => + !this.settings.autoResolveLogConflicts || + !this.isLogFile(conflict.filePath), ); if (remainingConflicts.length > 0) {