diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2018-08-28 18:01:53 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2018-08-28 18:01:53 +1000 |
commit | 320ccdb22afc89e7bd77695eafb262281b323095 (patch) | |
tree | 5069a2dbed12ab56b2ec2f479314ed5db17a9d7f /pkg/commands/git.go | |
parent | db1d5328f2895fb3437f2ef70f4c2ef54adf2ee3 (diff) |
when panicking due to malformed gitconfig, show a more useful error
Diffstat (limited to 'pkg/commands/git.go')
-rw-r--r-- | pkg/commands/git.go | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 235809753..1e36aa84c 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/i18n" "github.com/jesseduffield/lazygit/pkg/utils" "github.com/sirupsen/logrus" gitconfig "github.com/tcnksm/go-gitconfig" @@ -20,13 +21,15 @@ type GitCommand struct { OSCommand *OSCommand Worktree *gogit.Worktree Repo *gogit.Repository + Tr *i18n.Localizer } // NewGitCommand it runs git commands -func NewGitCommand(log *logrus.Entry, osCommand *OSCommand) (*GitCommand, error) { +func NewGitCommand(log *logrus.Entry, osCommand *OSCommand, tr *i18n.Localizer) (*GitCommand, error) { gitCommand := &GitCommand{ Log: log, OSCommand: osCommand, + Tr: tr, } return gitCommand, nil } @@ -35,7 +38,10 @@ func NewGitCommand(log *logrus.Entry, osCommand *OSCommand) (*GitCommand, error) func (c *GitCommand) SetupGit() { c.verifyInGitRepo() c.navigateToRepoRootDirectory() - c.setupWorktree() + if err := c.setupWorktree(); err != nil { + c.Log.Error(err) + panic(err) + } } // GetStashEntries stash entryies @@ -159,18 +165,23 @@ func (c *GitCommand) navigateToRepoRootDirectory() { } } -func (c *GitCommand) setupWorktree() { +func (c *GitCommand) setupWorktree() error { r, err := gogit.PlainOpen(".") if err != nil { - panic(err) + if strings.Contains(err.Error(), `unquoted '\' must be followed by new line`) { + errorMessage := c.Tr.SLocalize("GitconfigParseErr") + return errors.New(errorMessage) + } + return err } c.Repo = r w, err := r.Worktree() if err != nil { - panic(err) + return err } c.Worktree = w + return nil } // ResetHard does the equivalent of `git reset --hard HEAD` |