feature: allow merging tags into branches (#671)

Adds "Merge {tag} into {branch}" menu item to tag menu in histories.
The rest is handled by already existing merge code.
This commit is contained in:
Dmitrij D. Czarkoff 2024-11-10 04:51:15 +00:00 committed by GitHub
parent b974436c8a
commit 4924e960bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 23 additions and 2 deletions

View file

@ -365,7 +365,7 @@ namespace SourceGit.ViewModels
if (tags.Count > 0)
{
foreach (var tag in tags)
FillTagMenu(menu, tag);
FillTagMenu(menu, tag, current, commit.IsMerged);
menu.Items.Add(new MenuItem() { Header = "-" });
}
@ -893,7 +893,7 @@ namespace SourceGit.ViewModels
menu.Items.Add(submenu);
}
private void FillTagMenu(ContextMenu menu, Models.Tag tag)
private void FillTagMenu(ContextMenu menu, Models.Tag tag, Models.Branch current, bool merged)
{
var submenu = new MenuItem();
submenu.Header = tag.Name;
@ -912,6 +912,19 @@ namespace SourceGit.ViewModels
};
submenu.Items.Add(push);
var merge = new MenuItem();
merge.Header = new Views.NameHighlightedTextBlock("TagCM.Merge", tag.Name, current.Name);
merge.Icon = App.CreateMenuIcon("Icons.Merge");
merge.IsEnabled = !merged;
merge.Click += (_, e) =>
{
if (PopupHost.CanCreatePopup())
PopupHost.ShowPopup(new Merge(_repo, tag.Name, current.Name));
e.Handled = true;
};
submenu.Items.Add(merge);
submenu.Items.Add(new MenuItem() { Header = "-" });
var delete = new MenuItem();
delete.Header = new Views.NameHighlightedTextBlock("TagCM.Delete", tag.Name);
delete.Icon = App.CreateMenuIcon("Icons.Clear");