diff --git a/pkg/commands/sync.go b/pkg/commands/sync.go index e3be30dc1..e032d0a65 100644 --- a/pkg/commands/sync.go +++ b/pkg/commands/sync.go @@ -2,6 +2,7 @@ package commands import ( "fmt" + "sync" ) // Push pushes to a branch @@ -59,3 +60,32 @@ func (c *GitCommand) FetchRemote(remoteName string, promptUserForCredential func command := fmt.Sprintf("git fetch %s", remoteName) return c.OSCommand.DetectUnamePass(command, promptUserForCredential) } + +func (c *GitCommand) GetPullMode(mode string) string { + if mode != "auto" { + return mode + } + + var isRebase bool + var isFf bool + var wg sync.WaitGroup + + wg.Add(2) + go func() { + isRebase = c.GetConfigValue("pull.rebase") == "true" + wg.Done() + }() + go func() { + isFf = c.GetConfigValue("pull.ff") == "only" + wg.Done() + }() + wg.Wait() + + if isRebase { + return "rebase" + } else if isFf { + return "ff-only" + } else { + return "merge" + } +} diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index faacf6fc8..4d225d945 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -4,7 +4,6 @@ import ( "fmt" "regexp" "strings" - "sync" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands" @@ -660,42 +659,15 @@ func (gui *Gui) pullFiles(opts PullFilesOptions) error { return err } - mode := gui.getPullMode() + mode := &gui.Config.GetUserConfig().Git.Pull.Mode + *mode = gui.GitCommand.GetPullMode(*mode) // TODO: this doesn't look like a good idea. Why the goroutine? - go utils.Safe(func() { _ = gui.pullWithMode(mode, opts) }) + go utils.Safe(func() { _ = gui.pullWithMode(*mode, opts) }) 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()