1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-28 16:02:01 +03:00

Log when directory is changed

This commit is contained in:
Jesse Duffield
2023-07-16 18:12:26 +10:00
parent 6b4a638415
commit ae0193698e
5 changed files with 21 additions and 6 deletions

View File

@ -33,9 +33,9 @@ func (self *WorktreeCommands) Delete(worktreePath string, force bool) error {
} }
func (self *WorktreeCommands) Detach(worktreePath string) error { func (self *WorktreeCommands) Detach(worktreePath string) error {
cmdArgs := NewGitCmd("checkout").Arg("--detach").WorktreePath(worktreePath).ToArgv() cmdArgs := NewGitCmd("checkout").Arg("--detach").ToArgv()
return self.cmd.New(cmdArgs).Run() return self.cmd.New(cmdArgs).SetWd(worktreePath).Run()
} }
func (self *WorktreeCommands) IsCurrentWorktree(w *models.Worktree) bool { func (self *WorktreeCommands) IsCurrentWorktree(w *models.Worktree) bool {

View File

@ -24,6 +24,9 @@ type ICmdObj interface {
AddEnvVars(...string) ICmdObj AddEnvVars(...string) ICmdObj
GetEnvVars() []string GetEnvVars() []string
// sets the working directory
SetWd(string) ICmdObj
// runs the command and returns an error if any // runs the command and returns an error if any
Run() error Run() error
// runs the command and returns the output as a string, and an error if any // runs the command and returns the output as a string, and an error if any
@ -142,6 +145,12 @@ func (self *CmdObj) GetEnvVars() []string {
return self.cmd.Env return self.cmd.Env
} }
func (self *CmdObj) SetWd(wd string) ICmdObj {
self.cmd.Dir = wd
return self
}
func (self *CmdObj) DontLog() ICmdObj { func (self *CmdObj) DontLog() ICmdObj {
self.dontLog = true self.dontLog = true
return self return self

View File

@ -344,7 +344,7 @@ func (self *BranchesController) promptWorktreeBranchDelete(selectedBranch *model
Title: fmt.Sprintf("Branch %s is checked out by worktree %s", selectedBranch.Name, worktree.Name()), Title: fmt.Sprintf("Branch %s is checked out by worktree %s", selectedBranch.Name, worktree.Name()),
Items: []*types.MenuItem{ Items: []*types.MenuItem{
{ {
Label: "Switch to worktree " + worktree.Name(), Label: "Switch to worktree",
OnPress: func() error { OnPress: func() error {
return self.c.Helpers().Worktree.Switch(worktree, context.LOCAL_BRANCHES_CONTEXT_KEY) return self.c.Helpers().Worktree.Switch(worktree, context.LOCAL_BRANCHES_CONTEXT_KEY)
}, },

View File

@ -149,6 +149,8 @@ func (self *ReposHelper) DispatchSwitchTo(path string, reuse bool, errMsg string
return nil return nil
} }
self.c.LogCommand(fmt.Sprintf("Changing directory to %s", path), false)
if err := os.Chdir(path); err != nil { if err := os.Chdir(path); err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
return self.c.ErrorMsg(errMsg) return self.c.ErrorMsg(errMsg)

View File

@ -72,7 +72,7 @@ func (self *WorktreeHelper) NewWorktree() error {
if err := self.c.Git().Worktree.New(sanitizedBranchName(path), committish); err != nil { if err := self.c.Git().Worktree.New(sanitizedBranchName(path), committish); err != nil {
return err return err
} }
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}})
}) })
}, },
}) })
@ -122,7 +122,7 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error
} }
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, types.BRANCHES, types.FILES}})
}) })
}, },
}) })
@ -132,6 +132,10 @@ func (self *WorktreeHelper) Detach(worktree *models.Worktree) error {
return self.c.WithWaitingStatus(self.c.Tr.DetachingWorktree, func(gocui.Task) error { return self.c.WithWaitingStatus(self.c.Tr.DetachingWorktree, func(gocui.Task) error {
self.c.LogAction(self.c.Tr.RemovingWorktree) self.c.LogAction(self.c.Tr.RemovingWorktree)
return self.c.Git().Worktree.Detach(worktree.Path) err := self.c.Git().Worktree.Detach(worktree.Path)
if err != nil {
return self.c.Error(err)
}
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}})
}) })
} }