diff --git a/src/Models/RepositorySettings.cs b/src/Models/RepositorySettings.cs index 76a7f160..1d326a5e 100644 --- a/src/Models/RepositorySettings.cs +++ b/src/Models/RepositorySettings.cs @@ -224,6 +224,12 @@ namespace SourceGit.Models set; } = []; + public int PreferredMergeMode + { + get; + set; + } = 0; + public Dictionary CollectHistoriesFilters() { var map = new Dictionary(); diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 61140173..d1e32e84 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -153,6 +153,7 @@ Fetch remotes automatically Minute(s) Default Remote + Preferred Merge Mode ISSUE TRACKER Add Sample Gitee Issue Rule Add Sample Gitee Pull Request Rule diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml index fec5c780..932f1237 100644 --- a/src/Resources/Locales/zh_CN.axaml +++ b/src/Resources/Locales/zh_CN.axaml @@ -156,6 +156,7 @@ 启用定时自动拉取远程更新 分钟 默认远程 + 默认合并方式 ISSUE追踪 新增匹配Azure DevOps规则 新增匹配Gitee议题规则 diff --git a/src/Resources/Locales/zh_TW.axaml b/src/Resources/Locales/zh_TW.axaml index 66bcc33a..88b0ab64 100644 --- a/src/Resources/Locales/zh_TW.axaml +++ b/src/Resources/Locales/zh_TW.axaml @@ -156,6 +156,7 @@ 啟用定時自動提取 (fetch) 遠端更新 分鐘 預設遠端存放庫 + 首選合併模式 Issue 追蹤 新增符合 Azure DevOps 規則 新增符合 Gitee 議題規則 diff --git a/src/ViewModels/Merge.cs b/src/ViewModels/Merge.cs index be938867..faadaf57 100644 --- a/src/ViewModels/Merge.cs +++ b/src/ViewModels/Merge.cs @@ -69,9 +69,14 @@ namespace SourceGit.ViewModels private Models.MergeMode AutoSelectMergeMode() { + var preferredMergeModeIdx = _repo.Settings.PreferredMergeMode; + if (preferredMergeModeIdx < 0 || preferredMergeModeIdx > Models.MergeMode.Supported.Length) + preferredMergeModeIdx = 0; + + var defaultMergeMode = Models.MergeMode.Supported[preferredMergeModeIdx]; var config = new Commands.Config(_repo.FullPath).Get($"branch.{Into}.mergeoptions"); if (string.IsNullOrEmpty(config)) - return Models.MergeMode.Supported[0]; + return defaultMergeMode; if (config.Equals("--ff-only", StringComparison.Ordinal)) return Models.MergeMode.Supported[1]; if (config.Equals("--no-ff", StringComparison.Ordinal)) @@ -81,7 +86,7 @@ namespace SourceGit.ViewModels if (config.Equals("--no-commit", StringComparison.Ordinal) || config.Equals("--no-ff --no-commit", StringComparison.Ordinal)) return Models.MergeMode.Supported[4]; - return Models.MergeMode.Supported[0]; + return defaultMergeMode; } private readonly Repository _repo = null; diff --git a/src/ViewModels/RepositoryConfigure.cs b/src/ViewModels/RepositoryConfigure.cs index 3f590758..9a3bc9c4 100644 --- a/src/ViewModels/RepositoryConfigure.cs +++ b/src/ViewModels/RepositoryConfigure.cs @@ -36,6 +36,19 @@ namespace SourceGit.ViewModels } } + public int PreferredMergeMode + { + get => _repo.Settings.PreferredMergeMode; + set + { + if (_repo.Settings.PreferredMergeMode != value) + { + _repo.Settings.PreferredMergeMode = value; + OnPropertyChanged(); + } + } + } + public bool GPGCommitSigningEnabled { get; diff --git a/src/Views/RepositoryConfigure.axaml b/src/Views/RepositoryConfigure.axaml index e41375b9..ee1d6fa8 100644 --- a/src/Views/RepositoryConfigure.axaml +++ b/src/Views/RepositoryConfigure.axaml @@ -44,7 +44,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - +