feature: add Preferred Merge Mode in repository configure (#1156)

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-04-07 14:42:46 +08:00
parent ad9021e892
commit 3049730dd5
No known key found for this signature in database
7 changed files with 73 additions and 10 deletions

View file

@ -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;

View file

@ -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;