summaryrefslogtreecommitdiffstats
path: root/pkg/commands/sync.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/commands/sync.go')
-rw-r--r--pkg/commands/sync.go30
1 files changed, 30 insertions, 0 deletions
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"
+ }
+}