Skip to content

Commit 2053ce0

Browse files
committed
feature: supports merge selected commit to current branch (#800)
1 parent e17b53d commit 2053ce0

File tree

7 files changed

+41
-3
lines changed

7 files changed

+41
-3
lines changed

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
<x:String x:Key="Text.CommitCM.CopySHA" xml:space="preserve">Copy SHA</x:String>
112112
<x:String x:Key="Text.CommitCM.CustomAction" xml:space="preserve">Custom Action</x:String>
113113
<x:String x:Key="Text.CommitCM.InteractiveRebase" xml:space="preserve">Interactive Rebase ${0}$ to Here</x:String>
114+
<x:String x:Key="Text.CommitCM.Merge" xml:space="preserve">Merge to ${0}$</x:String>
114115
<x:String x:Key="Text.CommitCM.MergeMultiple" xml:space="preserve">Merge ...</x:String>
115116
<x:String x:Key="Text.CommitCM.Rebase" xml:space="preserve">Rebase ${0}$ to Here</x:String>
116117
<x:String x:Key="Text.CommitCM.Reset" xml:space="preserve">Reset ${0}$ to Here</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
<x:String x:Key="Text.CommitCM.CopySHA" xml:space="preserve">复制提交指纹</x:String>
115115
<x:String x:Key="Text.CommitCM.CustomAction" xml:space="preserve">自定义操作</x:String>
116116
<x:String x:Key="Text.CommitCM.InteractiveRebase" xml:space="preserve">交互式变基(rebase -i) ${0}$ 到此处</x:String>
117+
<x:String x:Key="Text.CommitCM.Merge" xml:space="preserve">合并(merge)此提交至 ${0}$</x:String>
117118
<x:String x:Key="Text.CommitCM.MergeMultiple" xml:space="preserve">合并(merge)...</x:String>
118119
<x:String x:Key="Text.CommitCM.Rebase" xml:space="preserve">变基(rebase) ${0}$ 到此处</x:String>
119120
<x:String x:Key="Text.CommitCM.Reset" xml:space="preserve">重置(reset) ${0}$ 到此处</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
<x:String x:Key="Text.CommitCM.CopySHA" xml:space="preserve">複製提交編號</x:String>
115115
<x:String x:Key="Text.CommitCM.CustomAction" xml:space="preserve">自訂動作</x:String>
116116
<x:String x:Key="Text.CommitCM.InteractiveRebase" xml:space="preserve">互動式重定基底 (rebase -i) ${0}$ 到此處</x:String>
117+
<x:String x:Key="Text.CommitCM.Merge" xml:space="preserve">合併 (merge) 此提交到 ${0}$</x:String>
117118
<x:String x:Key="Text.CommitCM.MergeMultiple" xml:space="preserve">合併 (merge)...</x:String>
118119
<x:String x:Key="Text.CommitCM.Rebase" xml:space="preserve">重定基底 (rebase) ${0}$ 到此處</x:String>
119120
<x:String x:Key="Text.CommitCM.Reset" xml:space="preserve">重設 (reset) ${0}$ 到此處</x:String>

src/ViewModels/Histories.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,21 @@ public ContextMenu MakeContextMenu(ListBox list)
513513
e.Handled = true;
514514
};
515515
menu.Items.Add(cherryPick);
516+
517+
if (!commit.HasDecorators)
518+
{
519+
var merge = new MenuItem();
520+
merge.Header = new Views.NameHighlightedTextBlock("CommitCM.Merge", current.Name);
521+
merge.Icon = App.CreateMenuIcon("Icons.Merge");
522+
merge.Click += (_, e) =>
523+
{
524+
if (PopupHost.CanCreatePopup())
525+
PopupHost.ShowPopup(new Merge(_repo, commit, current.Name));
526+
527+
e.Handled = true;
528+
};
529+
menu.Items.Add(merge);
530+
}
516531
}
517532
else
518533
{

src/ViewModels/Merge.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ public Merge(Repository repo, Models.Branch source, string into)
3232
View = new Views.Merge() { DataContext = this };
3333
}
3434

35+
public Merge(Repository repo, Models.Commit source, string into)
36+
{
37+
_repo = repo;
38+
_sourceName = source.SHA;
39+
40+
Source = source;
41+
Into = into;
42+
SelectedMode = AutoSelectMergeMode();
43+
View = new Views.Merge() { DataContext = this };
44+
}
45+
3546
public Merge(Repository repo, Models.Tag source, string into)
3647
{
3748
_repo = repo;

src/Views/LauncherPage.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@
7777
HorizontalAlignment="Right"
7878
IsVisible="{Binding InProgress, Converter={x:Static BoolConverters.Not}}">
7979
<Button Classes="flat primary"
80-
Width="80" Height="28"
80+
Width="100" Height="28"
8181
Padding="0"
8282
HorizontalContentAlignment="Center"
8383
VerticalContentAlignment="Center"
8484
Content="{DynamicResource Text.Sure}"
8585
Click="OnPopupSure"
8686
HotKey="Enter"/>
8787
<Button Classes="flat"
88-
Width="80" Height="28"
88+
Width="100" Height="28"
8989
Margin="8,0,0,0"
9090
Padding="0"
9191
HorizontalContentAlignment="Center"

src/Views/Merge.axaml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:m="using:SourceGit.Models"
66
xmlns:vm="using:SourceGit.ViewModels"
7+
xmlns:c="using:SourceGit.Converters"
78
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
89
x:Class="SourceGit.Views.Merge"
910
x:DataType="vm:Merge">
1011
<StackPanel Orientation="Vertical" Margin="8,0">
1112
<TextBlock FontSize="18"
1213
Classes="bold"
1314
Text="{DynamicResource Text.Merge}"/>
14-
<Grid Margin="0,16,0,0" RowDefinitions="32,32,32" ColumnDefinitions="150,*">
15+
<Grid Margin="0,16,0,0" RowDefinitions="32,32,32" ColumnDefinitions="130,*">
1516
<TextBlock Grid.Row="0" Grid.Column="0"
1617
HorizontalAlignment="Right" VerticalAlignment="Center"
1718
Margin="0,0,8,0"
@@ -25,6 +26,14 @@
2526
</StackPanel>
2627
</DataTemplate>
2728

29+
<DataTemplate DataType="m:Commit">
30+
<Grid ColumnDefinitions="Auto,Auto,*">
31+
<Path Grid.Column="0" Width="14" Height="14" Margin="0,8,0,0" Data="{StaticResource Icons.Commit}"/>
32+
<TextBlock Grid.Column="1" Classes="primary" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
33+
<TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
34+
</Grid>
35+
</DataTemplate>
36+
2837
<DataTemplate DataType="m:Tag">
2938
<StackPanel Orientation="Horizontal">
3039
<Path Width="14" Height="14" Data="{StaticResource Icons.Tag}"/>

0 commit comments

Comments
 (0)