- returns `null` to fallback to git's `merge.ff` configure when user does not configure `Preferred Merge Mode`
- since `GetGitConfigBranchMergeOptions` is the last one, returns `Default` as fallback

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo
2025-07-03 15:30:23 +08:00
parent b40ad9ad86
commit d8bc3f924a

View File

@@ -85,29 +85,7 @@ namespace SourceGit.ViewModels
return
GetGitConfigBranchMergeOptions() // Branch
?? GetSettingsPreferredMergeMode() // Repository
?? GetGitConfigMergeFF() // Global
?? Models.MergeMode.Default; // Fallback
}
private Models.MergeMode GetSettingsPreferredMergeMode()
{
var preferredMergeModeIdx = _repo.Settings.PreferredMergeMode;
if (preferredMergeModeIdx < 0 || preferredMergeModeIdx > Models.MergeMode.Supported.Length)
return Models.MergeMode.Supported[preferredMergeModeIdx];
return Models.MergeMode.Default;
}
private Models.MergeMode GetGitConfigMergeFF()
{
var config = new Commands.Config(_repo.FullPath).Get("merge.ff");
return config switch
{
null or "" => null,
"false" => Models.MergeMode.NoFastForward,
"only" => Models.MergeMode.FastForward,
_ => null
};
?? GetGitConfigMergeFF(); // Global
}
private Models.MergeMode GetGitConfigBranchMergeOptions()
@@ -124,6 +102,26 @@ namespace SourceGit.ViewModels
};
}
private Models.MergeMode GetSettingsPreferredMergeMode()
{
var preferredMergeModeIdx = _repo.Settings.PreferredMergeMode;
if (preferredMergeModeIdx < 0 || preferredMergeModeIdx > Models.MergeMode.Supported.Length)
return null;
return Models.MergeMode.Supported[preferredMergeModeIdx];
}
private Models.MergeMode GetGitConfigMergeFF()
{
var config = new Commands.Config(_repo.FullPath).Get("merge.ff");
return config switch
{
"false" => Models.MergeMode.NoFastForward,
"only" => Models.MergeMode.FastForward,
_ => Models.MergeMode.Default
};
}
private readonly Repository _repo = null;
private readonly string _sourceName;
}