1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-25 12:24:47 +02:00

Use git lingo

This commit is contained in:
Jesse Duffield 2023-07-16 13:53:59 +10:00
parent c713d550c0
commit fe8adf9eb8
3 changed files with 47 additions and 37 deletions

View File

@ -7,6 +7,7 @@ import (
"log"
"os"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
@ -62,11 +63,13 @@ func (self *WorktreeHelper) NewWorktree() error {
return self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewWorktreePath,
HandleConfirm: func(committish string) error {
self.c.LogAction(self.c.Tr.Actions.CreateWorktree)
if err := self.c.Git().Worktree.New(sanitizedBranchName(path), committish); err != nil {
return err
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
return self.c.WithWaitingStatus(self.c.Tr.AddingWorktree, func(gocui.Task) error {
self.c.LogAction(self.c.Tr.Actions.AddWorktree)
if err := self.c.Git().Worktree.New(sanitizedBranchName(path), committish); err != nil {
return err
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
})
},
})
},

View File

@ -5,6 +5,7 @@ import (
"strings"
"text/tabwriter"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/context"
"github.com/jesseduffield/lazygit/pkg/gui/style"
@ -37,12 +38,12 @@ func (self *WorktreesController) GetKeybindings(opts types.KeybindingsOpts) []*t
},
{
Key: opts.GetKey(opts.Config.Universal.Remove),
Handler: self.checkSelected(self.delete),
Description: self.c.Tr.DeleteWorktree,
Handler: self.checkSelected(self.remove),
Description: self.c.Tr.RemoveWorktree,
},
{
Key: opts.GetKey(opts.Config.Universal.New),
Handler: self.create,
Handler: self.add,
Description: self.c.Tr.CreateWorktree,
},
}
@ -87,11 +88,11 @@ func (self *WorktreesController) GetOnRenderToMain() func() error {
}
}
func (self *WorktreesController) create() error {
func (self *WorktreesController) add() error {
return self.c.Helpers().Worktree.NewWorktree()
}
func (self *WorktreesController) delete(worktree *models.Worktree) error {
func (self *WorktreesController) remove(worktree *models.Worktree) error {
if worktree.Main() {
return self.c.ErrorMsg(self.c.Tr.CantDeleteMainWorktree)
}
@ -100,16 +101,16 @@ func (self *WorktreesController) delete(worktree *models.Worktree) error {
return self.c.ErrorMsg(self.c.Tr.CantDeleteCurrentWorktree)
}
return self.deleteWithForce(worktree, false)
return self.removeWithForce(worktree, false)
}
func (self *WorktreesController) deleteWithForce(worktree *models.Worktree, force bool) error {
title := self.c.Tr.DeleteWorktreeTitle
func (self *WorktreesController) removeWithForce(worktree *models.Worktree, force bool) error {
title := self.c.Tr.RemoveWorktreeTitle
var templateStr string
if force {
templateStr = self.c.Tr.ForceDeleteWorktreePrompt
templateStr = self.c.Tr.ForceRemoveWorktreePrompt
} else {
templateStr = self.c.Tr.DeleteWorktreePrompt
templateStr = self.c.Tr.RemoveWorktreePrompt
}
message := utils.ResolvePlaceholderString(
templateStr,
@ -122,15 +123,17 @@ func (self *WorktreesController) deleteWithForce(worktree *models.Worktree, forc
Title: title,
Prompt: message,
HandleConfirm: func() error {
self.c.LogAction(self.c.Tr.Actions.DeleteWorktree)
if err := self.c.Git().Worktree.Delete(worktree.Path, force); err != nil {
errMessage := err.Error()
if !force {
return self.deleteWithForce(worktree, true)
return self.c.WithWaitingStatus(self.c.Tr.RemovingWorktree, func(gocui.Task) error {
self.c.LogAction(self.c.Tr.RemovingWorktree)
if err := self.c.Git().Worktree.Delete(worktree.Path, force); err != nil {
errMessage := err.Error()
if !force {
return self.removeWithForce(worktree, true)
}
return self.c.ErrorMsg(errMessage)
}
return self.c.ErrorMsg(errMessage)
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES}})
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES}})
})
},
})
}

View File

@ -543,12 +543,14 @@ type TranslationSet struct {
ExitSearchMode string
ExitTextFilterMode string
EnterWorktree string
DeleteWorktree string
DeleteWorktreeTitle string
RemoveWorktree string
RemoveWorktreeTitle string
WorktreesTitle string
WorktreeTitle string
DeleteWorktreePrompt string
ForceDeleteWorktreePrompt string
RemoveWorktreePrompt string
ForceRemoveWorktreePrompt string
RemovingWorktree string
AddingWorktree string
CantDeleteCurrentWorktree string
AlreadyInWorktree string
CantDeleteMainWorktree string
@ -691,8 +693,8 @@ type Actions struct {
ResetBisect string
BisectSkip string
BisectMark string
DeleteWorktree string
CreateWorktree string
RemoveWorktree string
AddWorktree string
}
const englishIntroPopupMessage = `
@ -1265,13 +1267,15 @@ func EnglishTranslationSet() TranslationSet {
WorktreesTitle: "Worktrees",
WorktreeTitle: "Worktree",
EnterWorktree: "Enter worktree",
DeleteWorktree: "Delete worktree",
DeleteWorktreeTitle: "Delete worktree",
DeleteWorktreePrompt: "Are you sure you want to delete worktree '{{.worktreeName}}'?",
ForceDeleteWorktreePrompt: "'{{.worktreeName}}' is not fully merged. Are you sure you want to delete it?",
CantDeleteCurrentWorktree: "You cannot delete the current worktree!",
RemoveWorktree: "Remove worktree",
RemoveWorktreeTitle: "Remove worktree",
RemoveWorktreePrompt: "Are you sure you want to remove worktree '{{.worktreeName}}'?",
ForceRemoveWorktreePrompt: "'{{.worktreeName}}' is not fully merged. Are you sure you want to remove it?",
RemovingWorktree: "Deleting worktree",
AddingWorktree: "Adding worktree",
CantDeleteCurrentWorktree: "You cannot remove the current worktree!",
AlreadyInWorktree: "You are already in the selected worktree",
CantDeleteMainWorktree: "You cannot delete the main worktree!",
CantDeleteMainWorktree: "You cannot remove the main worktree!",
NoWorktreesThisRepo: "No worktrees",
MissingWorktree: "(missing)",
MainWorktree: "(main)",
@ -1388,8 +1392,8 @@ func EnglishTranslationSet() TranslationSet {
ResetBisect: "Reset bisect",
BisectSkip: "Bisect skip",
BisectMark: "Bisect mark",
DeleteWorktree: "Delete worktree",
CreateWorktree: "Create worktree",
RemoveWorktree: "Remove worktree",
AddWorktree: "Add worktree",
},
Bisect: Bisect{
Mark: "Mark current commit (%s) as %s",