diff options
author | AzraelSec <federicogerardi94@gmail.com> | 2023-03-29 00:53:14 +0200 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2023-04-15 17:26:08 +1000 |
commit | a3fdf91714c460f0496627e48a86a697107f40fb (patch) | |
tree | 1c94bd6cd475e160543880bb9a5e8459e950d83a | |
parent | 368f9c8cb3d1f86d2a854cdfc20a8c87221e4087 (diff) |
feat: allow to perform a rebase with breaking before the first commit
-rw-r--r-- | pkg/commands/git_commands/rebase.go | 5 | ||||
-rw-r--r-- | pkg/gui/controllers/helpers/merge_and_rebase_helper.go | 39 | ||||
-rw-r--r-- | pkg/i18n/chinese.go | 2 | ||||
-rw-r--r-- | pkg/i18n/dutch.go | 2 | ||||
-rw-r--r-- | pkg/i18n/english.go | 10 | ||||
-rw-r--r-- | pkg/i18n/korean.go | 2 | ||||
-rw-r--r-- | pkg/i18n/polish.go | 2 |
7 files changed, 40 insertions, 22 deletions
diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index 4e4892d8d..18072779e 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -126,6 +126,11 @@ func (self *RebaseCommands) InteractiveRebaseBreakAfter(commits []*models.Commit return self.PrepareInteractiveRebaseCommand(sha, todo, true, false).Run() } +func (self *RebaseCommands) EditRebase(branchRef string) error { + commands := []TodoLine{{Action: "break"}} + return self.PrepareInteractiveRebaseCommand(branchRef, commands, false, true).Run() +} + // PrepareInteractiveRebaseCommand returns the cmd for an interactive rebase // we tell git to run lazygit to edit the todo list, and we pass the client // lazygit a todo string to write to the todo file diff --git a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go index b70f7b2ed..9cb8f4a15 100644 --- a/pkg/gui/controllers/helpers/merge_and_rebase_helper.go +++ b/pkg/gui/controllers/helpers/merge_and_rebase_helper.go @@ -201,22 +201,39 @@ func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error { if ref == checkedOutBranch { return self.c.ErrorMsg(self.c.Tr.CantRebaseOntoSelf) } - prompt := utils.ResolvePlaceholderString( - self.c.Tr.ConfirmRebase, + menuItems := []*types.MenuItem{ + { + Label: self.c.Tr.SimpleRebase, + Key: 's', + OnPress: func() error { + self.c.LogAction(self.c.Tr.Actions.RebaseBranch) + err := self.git.Rebase.RebaseBranch(ref) + return self.CheckMergeOrRebase(err) + }, + }, + { + Label: self.c.Tr.InteractiveRebase, + Key: 'i', + Tooltip: self.c.Tr.InteractiveRebaseTooltip, + OnPress: func() error { + self.c.LogAction(self.c.Tr.Actions.RebaseBranch) + err := self.git.Rebase.EditRebase(ref) + return self.CheckMergeOrRebase(err) + }, + }, + } + + title := utils.ResolvePlaceholderString( + self.c.Tr.RebasingTitle, map[string]string{ "checkedOutBranch": checkedOutBranch, - "selectedBranch": ref, + "ref": ref, }, ) - return self.c.Confirm(types.ConfirmOpts{ - Title: self.c.Tr.RebasingTitle, - Prompt: prompt, - HandleConfirm: func() error { - self.c.LogAction(self.c.Tr.Actions.RebaseBranch) - err := self.git.Rebase.RebaseBranch(ref) - return self.CheckMergeOrRebase(err) - }, + return self.c.Menu(types.CreateMenuOptions{ + Title: title, + Items: menuItems, }) } diff --git a/pkg/i18n/chinese.go b/pkg/i18n/chinese.go index dbc8122e9..2d300caf7 100644 --- a/pkg/i18n/chinese.go +++ b/pkg/i18n/chinese.go @@ -201,8 +201,6 @@ func chineseTranslationSet() TranslationSet { ReflogCommitsTitle: "Reflog 页面", GlobalTitle: "全局键绑定", ConflictsResolved: "已解决所有冲突。是否继续?", - RebasingTitle: "变基", - ConfirmRebase: "您确定要将分支 {{.checkedOutBranch}} 变基到 {{.selectedBranch}} 吗?", ConfirmMerge: "您确定要将分支 {{.selectedBranch}} 合并到 {{.checkedOutBranch}} 吗?", FwdNoUpstream: "此分支没有上游,无法快进", FwdNoLocalUpstream: "此分支的远程未在本地注册,无法快进", diff --git a/pkg/i18n/dutch.go b/pkg/i18n/dutch.go index d8fcb5338..f52908cea 100644 --- a/pkg/i18n/dutch.go +++ b/pkg/i18n/dutch.go @@ -166,9 +166,7 @@ func dutchTranslationSet() TranslationSet { ReflogCommitsTitle: "Reflog", GlobalTitle: "Globale Sneltoetsen", ConflictsResolved: "alle merge conflicten zijn opgelost. Wilt je verder gaan?", - RebasingTitle: "Rebasen", MergingTitle: "Mergen", - ConfirmRebase: "Weet je zeker dat je '{{.checkedOutBranch}}' op '{{.selectedBranch}}' wil rebasen?", ConfirmMerge: "Weet je zeker dat je '{{.selectedBranch}}' in '{{.checkedOutBranch}}' wil mergen?", FwdNoUpstream: "Kan niet de branch vooruitspoelen zonder upstream", FwdCommitsToPush: "Je kan niet vooruitspoelen als de branch geen nieuwe commits heeft", diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 80179f365..b8cbc46b1 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -209,7 +209,9 @@ type TranslationSet struct { ReflogCommitsTitle string ConflictsResolved string RebasingTitle string - ConfirmRebase string + SimpleRebase string + InteractiveRebase string + InteractiveRebaseTooltip string ConfirmMerge string FwdNoUpstream string FwdNoLocalUpstream string @@ -877,8 +879,10 @@ func EnglishTranslationSet() TranslationSet { ReflogCommitsTitle: "Reflog", GlobalTitle: "Global Keybindings", ConflictsResolved: "all merge conflicts resolved. Continue?", - RebasingTitle: "Rebasing", - ConfirmRebase: "Are you sure you want to rebase '{{.checkedOutBranch}}' on top of '{{.selectedBranch}}'?", + RebasingTitle: "Rebase '{{.checkedOutBranch}}' onto '{{.ref}}'", + SimpleRebase: "Simple rebase", + InteractiveRebase: "Interactive rebase", + InteractiveRebaseTooltip: "Begin an interactive rebase with a break at the start, so you can update the TODO commits before continuing", ConfirmMerge: "Are you sure you want to merge '{{.selectedBranch}}' into '{{.checkedOutBranch}}'?", FwdNoUpstream: "Cannot fast-forward a branch with no upstream", FwdNoLocalUpstream: "Cannot fast-forward a branch whose remote is not registered locally", diff --git a/pkg/i18n/korean.go b/pkg/i18n/korean.go index fa649bcc0..88e7db8f6 100644 --- a/pkg/i18n/korean.go +++ b/pkg/i18n/korean.go @@ -202,8 +202,6 @@ func koreanTranslationSet() TranslationSet { ReflogCommitsTitle: "Reflog", GlobalTitle: "글로벌 키 바인딩", ConflictsResolved: "모든 병합 충돌이 해결되었습니다. 계속 할까요?", - RebasingTitle: "리베이스 중", - ConfirmRebase: "정말로 '{{.checkedOutBranch}}' 을(를) '{{.selectedBranch}}'에 리베이스 하시겠습니까?", ConfirmMerge: "정말로 '{{.selectedBranch}}' 을(를) '{{.checkedOutBranch}}'에 병합하시겠습니까?", FwdNoUpstream: "Cannot fast-forward a branch with no upstream", FwdNoLocalUpstream: "Cannot fast-forward a branch whose remote is not registered locally", diff --git a/pkg/i18n/polish.go b/pkg/i18n/polish.go index 3db26a22c..00ed9f38f 100644 --- a/pkg/i18n/polish.go +++ b/pkg/i18n/polish.go @@ -112,9 +112,7 @@ func polishTranslationSet() TranslationSet { FileStagingRequirements: "Można tylko zatwierdzić pojedyncze linie dla śledzonych plików z niezatwierdzonymi zmianami", StagingTitle: "Poczekalnia", ReturnToFilesPanel: "wróć do panelu plików", - RebasingTitle: "Zmiana bazy", MergingTitle: "Scalanie", - ConfirmRebase: "Czy napewno chcesz zmienić bazę '{{.checkedOutBranch}}' na '{{.selectedBranch}}'?", ConfirmMerge: "Czy na pewno chcesz scalić '{{.selectedBranch}}' do '{{.checkedOutBranch}}'?", FwdNoUpstream: "Nie można przewinąć gałęzi bez gałęzi nadrzędnej", FwdCommitsToPush: "Nie można przewinąć gałęzi z commitami do wysłania", |