Skip to content

Commit d3d1377

Browse files
committed
refactor: auto-select merge mode
- Change the description of `Default` merge mode to `Use git configuration` - It's not necessary to read global `merge.ff` configuration
1 parent 7b02927 commit d3d1377

File tree

2 files changed

+7
-27
lines changed

2 files changed

+7
-27
lines changed

src/Models/MergeMode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
public class MergeMode(string n, string d, string a)
44
{
55
public static readonly MergeMode Default =
6-
new MergeMode("Default", "Fast-forward if possible", "");
6+
new MergeMode("Default", "Use git configuration", "");
77

88
public static readonly MergeMode FastForward =
99
new MergeMode("Fast-forward", "Refuse to merge when fast-forward is not possible", "--ff-only");

src/ViewModels/Merge.cs

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -78,47 +78,27 @@ public override async Task<bool> Sure()
7878
}
7979

8080
private Models.MergeMode AutoSelectMergeMode()
81-
{
82-
return
83-
GetGitConfigBranchMergeOptions() // Branch
84-
?? GetSettingsPreferredMergeMode() // Repository
85-
?? GetGitConfigMergeFF(); // Global
86-
}
87-
88-
private Models.MergeMode GetGitConfigBranchMergeOptions()
8981
{
9082
var config = new Commands.Config(_repo.FullPath).GetAsync($"branch.{Into}.mergeoptions").Result;
91-
return config switch
83+
var mode = config switch
9284
{
93-
null or "" => null,
9485
"--ff-only" => Models.MergeMode.FastForward,
9586
"--no-ff" => Models.MergeMode.NoFastForward,
9687
"--squash" => Models.MergeMode.Squash,
9788
"--no-commit" or "--no-ff --no-commit" => Models.MergeMode.DontCommit,
98-
_ => null
89+
_ => null,
9990
};
100-
}
10191

102-
private Models.MergeMode GetSettingsPreferredMergeMode()
103-
{
92+
if (mode != null)
93+
return mode;
94+
10495
var preferredMergeModeIdx = _repo.Settings.PreferredMergeMode;
10596
if (preferredMergeModeIdx < 0 || preferredMergeModeIdx > Models.MergeMode.Supported.Length)
106-
return null;
97+
return Models.MergeMode.Default;
10798

10899
return Models.MergeMode.Supported[preferredMergeModeIdx];
109100
}
110101

111-
private Models.MergeMode GetGitConfigMergeFF()
112-
{
113-
var config = new Commands.Config(_repo.FullPath).GetAsync("merge.ff").Result;
114-
return config switch
115-
{
116-
"false" => Models.MergeMode.NoFastForward,
117-
"only" => Models.MergeMode.FastForward,
118-
_ => Models.MergeMode.Default
119-
};
120-
}
121-
122102
private readonly Repository _repo = null;
123103
private readonly string _sourceName;
124104
}

0 commit comments

Comments
 (0)