diff options
author | Emiliano Ruiz Carletti <contact@eruizc.dev> | 2021-04-18 18:07:13 -0300 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-06-15 08:31:07 +1000 |
commit | c57a0077d043bc0ecd3f4c8e0988c46655eecb94 (patch) | |
tree | 81cbf62f0668508f7f3b65a8dcb6cd82789009d9 /pkg/gui | |
parent | 46e500dc28e6ca030214f729f3e6954557019cf9 (diff) |
Read pull mode from gitconfig lazily
Diffstat (limited to 'pkg/gui')
-rw-r--r-- | pkg/gui/files_panel.go | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 2c045504e..faacf6fc8 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -4,6 +4,7 @@ import ( "fmt" "regexp" "strings" + "sync" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands" @@ -659,7 +660,7 @@ func (gui *Gui) pullFiles(opts PullFilesOptions) error { return err } - mode := gui.Config.GetUserConfig().Git.Pull.Mode + mode := gui.getPullMode() // TODO: this doesn't look like a good idea. Why the goroutine? go utils.Safe(func() { _ = gui.pullWithMode(mode, opts) }) @@ -667,6 +668,34 @@ func (gui *Gui) pullFiles(opts PullFilesOptions) error { return nil } +func (gui *Gui) getPullMode() string { + mode := &gui.Config.GetUserConfig().Git.Pull.Mode + if *mode == "auto" { + var isRebase bool + var isFf bool + var wg sync.WaitGroup + wg.Add(2) + go func() { + isRebase = gui.GitCommand.GetConfigValue("pull.rebase") == "true" + wg.Done() + }() + go func() { + isFf = gui.GitCommand.GetConfigValue("pull.ff") == "true" + wg.Done() + }() + wg.Wait() + + if isRebase { + *mode = "rebase" + } else if isFf { + *mode = "ff-only" + } else { + *mode = "merge" + } + } + return *mode +} + func (gui *Gui) pullWithMode(mode string, opts PullFilesOptions) error { gui.Mutexes.FetchMutex.Lock() defer gui.Mutexes.FetchMutex.Unlock() |