summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorEmiliano Ruiz Carletti <contact@eruizc.dev>2021-04-18 18:07:13 -0300
committerJesse Duffield <jessedduffield@gmail.com>2021-06-15 08:31:07 +1000
commitc57a0077d043bc0ecd3f4c8e0988c46655eecb94 (patch)
tree81cbf62f0668508f7f3b65a8dcb6cd82789009d9 /pkg/gui/files_panel.go
parent46e500dc28e6ca030214f729f3e6954557019cf9 (diff)
Read pull mode from gitconfig lazily
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go31
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()