Skip to content

Commit 3049730

Browse files
committed
feature: add Preferred Merge Mode in repository configure (#1156)
Signed-off-by: leo <[email protected]>
1 parent ad9021e commit 3049730

File tree

7 files changed

+73
-10
lines changed

7 files changed

+73
-10
lines changed

src/Models/RepositorySettings.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,12 @@ public List<string> ExpandedBranchNodesInSideBar
224224
set;
225225
} = [];
226226

227+
public int PreferredMergeMode
228+
{
229+
get;
230+
set;
231+
} = 0;
232+
227233
public Dictionary<string, FilterMode> CollectHistoriesFilters()
228234
{
229235
var map = new Dictionary<string, FilterMode>();

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@
153153
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">Fetch remotes automatically</x:String>
154154
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">Minute(s)</x:String>
155155
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">Default Remote</x:String>
156+
<x:String x:Key="Text.Configure.Git.PreferredMergeMode" xml:space="preserve">Preferred Merge Mode</x:String>
156157
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUE TRACKER</x:String>
157158
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">Add Sample Gitee Issue Rule</x:String>
158159
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteePullRequest" xml:space="preserve">Add Sample Gitee Pull Request Rule</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@
156156
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">启用定时自动拉取远程更新</x:String>
157157
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分钟</x:String>
158158
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">默认远程</x:String>
159+
<x:String x:Key="Text.Configure.Git.PreferredMergeMode" xml:space="preserve">默认合并方式</x:String>
159160
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">ISSUE追踪</x:String>
160161
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">新增匹配Azure DevOps规则</x:String>
161162
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">新增匹配Gitee议题规则</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@
156156
<x:String x:Key="Text.Configure.Git.AutoFetch" xml:space="preserve">啟用定時自動提取 (fetch) 遠端更新</x:String>
157157
<x:String x:Key="Text.Configure.Git.AutoFetchIntervalSuffix" xml:space="preserve">分鐘</x:String>
158158
<x:String x:Key="Text.Configure.Git.DefaultRemote" xml:space="preserve">預設遠端存放庫</x:String>
159+
<x:String x:Key="Text.Configure.Git.PreferredMergeMode" xml:space="preserve">首選合併模式</x:String>
159160
<x:String x:Key="Text.Configure.IssueTracker" xml:space="preserve">Issue 追蹤</x:String>
160161
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">新增符合 Azure DevOps 規則</x:String>
161162
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">新增符合 Gitee 議題規則</x:String>

src/ViewModels/Merge.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,14 @@ public override Task<bool> Sure()
6969

7070
private Models.MergeMode AutoSelectMergeMode()
7171
{
72+
var preferredMergeModeIdx = _repo.Settings.PreferredMergeMode;
73+
if (preferredMergeModeIdx < 0 || preferredMergeModeIdx > Models.MergeMode.Supported.Length)
74+
preferredMergeModeIdx = 0;
75+
76+
var defaultMergeMode = Models.MergeMode.Supported[preferredMergeModeIdx];
7277
var config = new Commands.Config(_repo.FullPath).Get($"branch.{Into}.mergeoptions");
7378
if (string.IsNullOrEmpty(config))
74-
return Models.MergeMode.Supported[0];
79+
return defaultMergeMode;
7580
if (config.Equals("--ff-only", StringComparison.Ordinal))
7681
return Models.MergeMode.Supported[1];
7782
if (config.Equals("--no-ff", StringComparison.Ordinal))
@@ -81,7 +86,7 @@ private Models.MergeMode AutoSelectMergeMode()
8186
if (config.Equals("--no-commit", StringComparison.Ordinal) || config.Equals("--no-ff --no-commit", StringComparison.Ordinal))
8287
return Models.MergeMode.Supported[4];
8388

84-
return Models.MergeMode.Supported[0];
89+
return defaultMergeMode;
8590
}
8691

8792
private readonly Repository _repo = null;

src/ViewModels/RepositoryConfigure.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,19 @@ public string DefaultRemote
3636
}
3737
}
3838

39+
public int PreferredMergeMode
40+
{
41+
get => _repo.Settings.PreferredMergeMode;
42+
set
43+
{
44+
if (_repo.Settings.PreferredMergeMode != value)
45+
{
46+
_repo.Settings.PreferredMergeMode = value;
47+
OnPropertyChanged();
48+
}
49+
}
50+
}
51+
3952
public bool GPGCommitSigningEnabled
4053
{
4154
get;

src/Views/RepositoryConfigure.axaml

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<TextBlock Classes="tab_header" Text="{DynamicResource Text.Configure.Git}"/>
4545
</TabItem.Header>
4646

47-
<Grid Margin="16,4,16,8" RowDefinitions="32,32,32,32,32,32,32,32,32" ColumnDefinitions="Auto,*">
47+
<Grid Margin="16,4,16,8" RowDefinitions="32,32,32,32,32,32,32,32,32,32" ColumnDefinitions="Auto,*">
4848
<TextBlock Grid.Row="0" Grid.Column="0"
4949
HorizontalAlignment="Right" VerticalAlignment="Center"
5050
Margin="0,0,8,0"
@@ -86,10 +86,46 @@
8686
</ComboBox>
8787

8888
<TextBlock Grid.Row="3" Grid.Column="0"
89+
HorizontalAlignment="Right" VerticalAlignment="Center"
90+
Margin="0,0,8,0"
91+
Text="{DynamicResource Text.Configure.Git.PreferredMergeMode}"/>
92+
<ComboBox Grid.Row="3" Grid.Column="1"
93+
Height="28" Padding="8,0"
94+
VerticalAlignment="Center" HorizontalAlignment="Stretch"
95+
ItemsSource="{Binding Source={x:Static m:MergeMode.Supported}}"
96+
SelectedIndex="{Binding PreferredMergeMode, Mode=TwoWay}"
97+
Grid.IsSharedSizeScope="True">
98+
<ComboBox.ItemTemplate>
99+
<DataTemplate DataType="m:MergeMode">
100+
<Grid Height="20">
101+
<Grid.ColumnDefinitions>
102+
<ColumnDefinition Width="Auto" SharedSizeGroup="MergeModeNameColumn"/>
103+
<ColumnDefinition Width="Auto" SharedSizeGroup="MergeModeDescriptionColumn"/>
104+
<ColumnDefinition Width="Auto" SharedSizeGroup="MergeModeOptionColumn"/>
105+
</Grid.ColumnDefinitions>
106+
107+
<TextBlock Grid.Column="0" Text="{Binding Name}"/>
108+
<TextBlock Grid.Column="1" Text="{Binding Desc}" Margin="8,0" FontSize="11" Foreground="{DynamicResource Brush.FG2}"/>
109+
<TextBlock Grid.Column="2" Text="{Binding Arg}" HorizontalAlignment="Right" FontSize="11" Foreground="{DynamicResource Brush.FG2}"/>
110+
</Grid>
111+
</DataTemplate>
112+
</ComboBox.ItemTemplate>
113+
114+
<ComboBox.SelectionBoxItemTemplate>
115+
<DataTemplate DataType="m:MergeMode">
116+
<Grid ColumnDefinitions="Auto,*">
117+
<TextBlock Grid.Column="0" Text="{Binding Name}" Margin="0,0,8,0"/>
118+
<TextBlock Grid.Column="1" Text="{Binding Desc}" HorizontalAlignment="Right" FontSize="11" Foreground="{DynamicResource Brush.FG2}"/>
119+
</Grid>
120+
</DataTemplate>
121+
</ComboBox.SelectionBoxItemTemplate>
122+
</ComboBox>
123+
124+
<TextBlock Grid.Row="4" Grid.Column="0"
89125
HorizontalAlignment="Right" VerticalAlignment="Center"
90126
Margin="0,0,8,0"
91127
Text="{DynamicResource Text.Configure.Proxy}"/>
92-
<TextBox Grid.Row="3" Grid.Column="1"
128+
<TextBox Grid.Row="4" Grid.Column="1"
93129
Height="28"
94130
CornerRadius="3"
95131
Watermark="{DynamicResource Text.Configure.Proxy.Placeholder}"
@@ -101,29 +137,29 @@
101137
</TextBox.InnerRightContent>
102138
</TextBox>
103139

104-
<TextBlock Grid.Row="4" Grid.Column="0"
140+
<TextBlock Grid.Row="5" Grid.Column="0"
105141
HorizontalAlignment="Right" VerticalAlignment="Center"
106142
Margin="0,0,8,0"
107143
Text="{DynamicResource Text.Preferences.GPG.UserKey}"/>
108-
<TextBox Grid.Row="4" Grid.Column="1"
144+
<TextBox Grid.Row="5" Grid.Column="1"
109145
Height="28"
110146
CornerRadius="3"
111147
Watermark="{DynamicResource Text.Preferences.GPG.UserKey.Placeholder}"
112148
Text="{Binding GPGUserSigningKey, Mode=TwoWay}"/>
113149

114-
<CheckBox Grid.Row="5" Grid.Column="1"
150+
<CheckBox Grid.Row="6" Grid.Column="1"
115151
Content="{DynamicResource Text.Preferences.GPG.CommitEnabled}"
116152
IsChecked="{Binding GPGCommitSigningEnabled, Mode=TwoWay}"/>
117153

118-
<CheckBox Grid.Row="6" Grid.Column="1"
154+
<CheckBox Grid.Row="7" Grid.Column="1"
119155
Content="{DynamicResource Text.Preferences.GPG.TagEnabled}"
120156
IsChecked="{Binding GPGTagSigningEnabled, Mode=TwoWay}"/>
121157

122-
<CheckBox Grid.Row="7" Grid.Column="1"
158+
<CheckBox Grid.Row="8" Grid.Column="1"
123159
Content="{DynamicResource Text.Preferences.Git.EnablePruneOnFetch}"
124160
IsChecked="{Binding EnablePruneOnFetch, Mode=TwoWay}"/>
125161

126-
<StackPanel Grid.Row="8" Grid.Column="1" Orientation="Horizontal">
162+
<StackPanel Grid.Row="9" Grid.Column="1" Orientation="Horizontal">
127163
<CheckBox x:Name="AutoFetchCheckBox"
128164
Content="{DynamicResource Text.Configure.Git.AutoFetch}"
129165
IsChecked="{Binding EnableAutoFetch, Mode=TwoWay}"/>

0 commit comments

Comments
 (0)