From 029f56cb2880e0687eaf0db9e4e574f1b4fb7610 Mon Sep 17 00:00:00 2001 From: leo Date: Sun, 6 Oct 2024 22:21:18 +0800 Subject: [PATCH] feature: the default merge option supports reading `branch..mergeoptions` configuration (#540) --- src/ViewModels/Merge.cs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/ViewModels/Merge.cs b/src/ViewModels/Merge.cs index 48af8722..fb1dccab 100644 --- a/src/ViewModels/Merge.cs +++ b/src/ViewModels/Merge.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; namespace SourceGit.ViewModels { @@ -7,13 +8,11 @@ namespace SourceGit.ViewModels public string Source { get; - private set; } public string Into { get; - private set; } public Models.MergeMode SelectedMode @@ -27,7 +26,7 @@ namespace SourceGit.ViewModels _repo = repo; Source = source; Into = into; - SelectedMode = Models.MergeMode.Supported[0]; + SelectedMode = AutoSelectMergeMode(); View = new Views.Merge() { DataContext = this }; } @@ -44,6 +43,21 @@ namespace SourceGit.ViewModels }); } + private Models.MergeMode AutoSelectMergeMode() + { + var config = new Commands.Config(_repo.FullPath).Get($"branch.{Into}.mergeoptions"); + if (string.IsNullOrEmpty(config)) + return Models.MergeMode.Supported[0]; + if (config.Equals("--no-ff", StringComparison.Ordinal)) + return Models.MergeMode.Supported[1]; + if (config.Equals("--squash", StringComparison.Ordinal)) + return Models.MergeMode.Supported[2]; + if (config.Equals("--no-commit", StringComparison.Ordinal) || config.Equals("--no-ff --no-commit", StringComparison.Ordinal)) + return Models.MergeMode.Supported[3]; + + return Models.MergeMode.Supported[0]; + } + private readonly Repository _repo = null; } }