feature: add interactive rebase to branch context menus (#2130)

This commit is contained in:
Joshua Patterson
2026-02-24 03:05:16 -06:00
committed by GitHub
parent e8e36bcf92
commit a2429a0f41
12 changed files with 39 additions and 1 deletions

View File

@@ -235,6 +235,7 @@ This document shows the translation status of each locale file in the repository
- Text.BranchCM.CreatePR
- Text.BranchCM.CreatePRForUpstream
- Text.BranchCM.EditDescription
- Text.BranchCM.InteractiveRebase.Manually
- Text.BranchCM.ResetToSelectedCommit
- Text.BranchCM.SwitchToWorktree
- Text.BranchTree.Ahead
@@ -580,6 +581,7 @@ This document shows the translation status of each locale file in the repository
<summary>Missing keys in pt_BR.axaml</summary>
- Text.Blame.BlameOnPreviousRevision
- Text.BranchCM.InteractiveRebase.Manually
- Text.BranchTree.AheadBehind
- Text.BranchTree.Behind
- Text.BranchTree.Tracking
@@ -914,6 +916,7 @@ This document shows the translation status of each locale file in the repository
- Text.BranchCM.CreatePR
- Text.BranchCM.CreatePRForUpstream
- Text.BranchCM.EditDescription
- Text.BranchCM.InteractiveRebase.Manually
- Text.BranchCM.ResetToSelectedCommit
- Text.BranchCM.SwitchToWorktree
- Text.BranchTree.Ahead
@@ -1193,6 +1196,7 @@ This document shows the translation status of each locale file in the repository
- Text.BranchCM.CreatePR
- Text.BranchCM.CreatePRForUpstream
- Text.BranchCM.EditDescription
- Text.BranchCM.InteractiveRebase.Manually
- Text.BranchCM.ResetToSelectedCommit
- Text.BranchCM.SwitchToWorktree
- Text.BranchTree.Ahead
@@ -1437,4 +1441,4 @@ This document shows the translation status of each locale file in the repository
### ![zh__CN](https://img.shields.io/badge/zh__CN-%E2%88%9A-brightgreen)
### ![zh__TW](https://img.shields.io/badge/zh__TW-%E2%88%9A-brightgreen)
### ![zh__TW](https://img.shields.io/badge/zh__TW-%E2%88%9A-brightgreen)

View File

@@ -74,6 +74,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Fast-Forward zu ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Fetche ${0}$ in ${1}$ hinein…</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow Abschließen ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Interaktives Rebase von ${0}$ auf ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Merge ${0}$ in ${1}$ hinein…</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Merge ausgewählte {0} Branches in aktuellen hinein</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Pull ${0}$</x:String>

View File

@@ -70,6 +70,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Fast-Forward to ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Fetch ${0}$ into ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Finish ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Interactively Rebase ${0}$ on ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Merge ${0}$ into ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Merge selected {0} branches into current</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Pull ${0}$</x:String>

View File

@@ -74,6 +74,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Fast-Forward a ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Fetch ${0}$ en ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Finalizar ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Hacer Rebase interactivamente ${0}$ en ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Merge ${0}$ en ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Hacer merge de las ramas {0} seleccionadas hacia la rama actual</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Pull ${0}$</x:String>

View File

@@ -68,6 +68,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Fast-Forward vers ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Fetch ${0}$ vers ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Terminer ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Rebaser Interactivement ${0}$ sur ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Fusionner ${0}$ dans ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Fusionner les {0} branches sélectionnées dans celle en cours</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Tirer ${0}$</x:String>

View File

@@ -64,6 +64,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Fast-Forward ke ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Fetch ${0}$ ke ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Selesaikan ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Rebase ${0}$ pada ${1}$ secara Interaktif</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Merge ${0}$ ke ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Merge {0} branch yang dipilih ke saat ini</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Pull ${0}$</x:String>

View File

@@ -74,6 +74,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Avanzamento Veloce a ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Recupera ${0}$ in ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - Completa ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Ribasare interattivamente ${0}$ su ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Unisci ${0}$ in ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Unisci i {0} branch selezionati in quello corrente</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Scarica ${0}$</x:String>

View File

@@ -61,6 +61,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">${0}$(으)로 Fast-Forward</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">${0}$에서 ${1}$(으)로 Fetch...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git Flow - ${0}$ 완료</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">${1}$을(를) 기반으로 ${0}$ 대화형 리베이스</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">${0}$을(를) ${1}$(으)로 병합...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">선택한 {0}개의 브랜치를 현재 브랜치로 병합</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">${0}$ Pull</x:String>

View File

@@ -74,6 +74,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">Перемотать вперёд к ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">Извлечь ${0}$ в ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git-процесс - Завершение ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">Интерактивное перемещение ${0}$ в ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">Влить ${0}$ в ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">Влить {0} выделенных веток в текущую</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">Загрузить ${0}$</x:String>

View File

@@ -74,6 +74,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">快进(fast-forward) 到 ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">拉取(fetch) ${0}$ 至 ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">GIT工作流 - 完成 ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">交互式变基 ${0}$ 到 ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">合并(merge) ${0}$ 到 ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">合并(merge) {0} 个分支到当前分支</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">拉回(pull) ${0}$</x:String>

View File

@@ -74,6 +74,7 @@
<x:String x:Key="Text.BranchCM.FastForward" xml:space="preserve">快轉 (fast-forward) 到 ${0}$</x:String>
<x:String x:Key="Text.BranchCM.FetchInto" xml:space="preserve">提取 (fetch) ${0}$ 到 ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.Finish" xml:space="preserve">Git 工作流 - 完成 ${0}$</x:String>
<x:String x:Key="Text.BranchCM.InteractiveRebase.Manually" xml:space="preserve">互動式重定基底 ${0}$ 至 ${1}$</x:String>
<x:String x:Key="Text.BranchCM.Merge" xml:space="preserve">合併 ${0}$ 到 ${1}$...</x:String>
<x:String x:Key="Text.BranchCM.MergeMultiBranches" xml:space="preserve">合併 {0} 個分支到目前分支</x:String>
<x:String x:Key="Text.BranchCM.Pull" xml:space="preserve">拉取 (pull) ${0}$</x:String>

View File

@@ -797,9 +797,21 @@ namespace SourceGit.Views
repo.ShowPopup(new ViewModels.Rebase(repo, current, branch));
e.Handled = true;
};
var interactiveRebase = new MenuItem();
interactiveRebase.Header = App.Text("BranchCM.InteractiveRebase.Manually", current.Name, branch.Name);
interactiveRebase.Icon = App.CreateMenuIcon("Icons.InteractiveRebase");
interactiveRebase.Click += async (_, e) =>
{
var commit = await new Commands.QuerySingleCommit(repo.FullPath, branch.Head).GetResultAsync();
await App.ShowDialog(new ViewModels.InteractiveRebase(repo, commit));
e.Handled = true;
};
menu.Items.Add(merge);
menu.Items.Add(rebase);
menu.Items.Add(new MenuItem() { Header = "-" });
menu.Items.Add(interactiveRebase);
}
if (hasNoWorktree)
@@ -1117,6 +1129,16 @@ namespace SourceGit.Views
repo.ShowPopup(new ViewModels.Rebase(repo, current, branch));
e.Handled = true;
};
var interactiveRebase = new MenuItem();
interactiveRebase.Header = App.Text("BranchCM.InteractiveRebase.Manually", current.Name, name);
interactiveRebase.Icon = App.CreateMenuIcon("Icons.InteractiveRebase");
interactiveRebase.Click += async (_, e) =>
{
var commit = await new Commands.QuerySingleCommit(repo.FullPath, branch.Head).GetResultAsync();
await App.ShowDialog(new ViewModels.InteractiveRebase(repo, commit));
e.Handled = true;
};
var compareWithHead = new MenuItem();
compareWithHead.Header = App.Text("BranchCM.CompareWithHead");
@@ -1140,6 +1162,8 @@ namespace SourceGit.Views
menu.Items.Add(merge);
menu.Items.Add(rebase);
menu.Items.Add(new MenuItem() { Header = "-" });
menu.Items.Add(interactiveRebase);
menu.Items.Add(new MenuItem() { Header = "-" });
menu.Items.Add(compareWithHead);
menu.Items.Add(compareWith);
}