diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml
index 836d56d5..bb89c21d 100644
--- a/src/Resources/Locales/en_US.axaml
+++ b/src/Resources/Locales/en_US.axaml
@@ -58,6 +58,7 @@
Fetch ${0}$ into ${1}$...
Git Flow - Finish ${0}$
Merge ${0}$ into ${1}$...
+ Merge selected {0} branches
Pull ${0}$
Pull ${0}$ into ${1}$...
Push ${0}$
diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs
index 38855fef..d593171e 100644
--- a/src/ViewModels/Repository.cs
+++ b/src/ViewModels/Repository.cs
@@ -13,6 +13,7 @@ using Avalonia.Media.Imaging;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.ComponentModel;
+using SourceGit.Models;
namespace SourceGit.ViewModels
{
@@ -950,6 +951,12 @@ namespace SourceGit.ViewModels
PopupHost.ShowPopup(new DeleteMultipleBranches(this, branches, isLocal));
}
+ public void MergeMultipleBranches(List branches)
+ {
+ if (PopupHost.CanCreatePopup())
+ PopupHost.ShowPopup(new MergeMultiple(this, branches.ConvertAll(b => _histories?.Commits?.Find(c => c.SHA == b.Head))));
+ }
+
public void CreateNewTag()
{
if (_currentBranch == null)
diff --git a/src/Views/BranchTree.axaml.cs b/src/Views/BranchTree.axaml.cs
index 92c2b043..d9588a0f 100644
--- a/src/Views/BranchTree.axaml.cs
+++ b/src/Views/BranchTree.axaml.cs
@@ -405,6 +405,17 @@ namespace SourceGit.Views
ev.Handled = true;
};
menu.Items.Add(deleteMulti);
+
+ var mergeMulti = new MenuItem();
+ mergeMulti.Header = App.Text("BranchCM.MergeMultiBranches", branches.Count);
+ mergeMulti.Icon = App.CreateMenuIcon("Icons.Merge");
+ mergeMulti.Click += (_, ev) =>
+ {
+ repo.MergeMultipleBranches(branches);
+ ev.Handled = true;
+ };
+ menu.Items.Add(mergeMulti);
+
menu?.Open(this);
}
}