1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-28 16:02:01 +03:00

Add --all to "git fetch" command when not fetching a specific remote

This commit is contained in:
Stefan Haller
2023-03-01 09:09:35 +01:00
parent 697157f5d5
commit 31a2ea1f19
4 changed files with 37 additions and 8 deletions

View File

@ -94,6 +94,7 @@ git:
mainBranches: [master, main] mainBranches: [master, main]
autoFetch: true autoFetch: true
autoRefresh: true autoRefresh: true
fetchAll: true # Pass --all flag when running git fetch. Set to false to fetch only origin (or the current branch's upstream remote if there is one)
branchLogCmd: 'git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --' branchLogCmd: 'git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --'
allBranchesLogCmd: 'git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium' allBranchesLogCmd: 'git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium'
overrideGpg: false # prevents lazygit from spawning a separate process when using GPG overrideGpg: false # prevents lazygit from spawning a separate process when using GPG

View File

@ -54,7 +54,9 @@ type FetchOptions struct {
// Fetch fetch git repo // Fetch fetch git repo
func (self *SyncCommands) FetchCmdObj(opts FetchOptions) oscommands.ICmdObj { func (self *SyncCommands) FetchCmdObj(opts FetchOptions) oscommands.ICmdObj {
cmdArgs := NewGitCmd("fetch").ToArgv() cmdArgs := NewGitCmd("fetch").
ArgIf(self.UserConfig.Git.FetchAll, "--all").
ToArgv()
cmdObj := self.cmd.New(cmdArgs) cmdObj := self.cmd.New(cmdArgs)
if opts.Background { if opts.Background {

View File

@ -95,15 +95,17 @@ func TestSyncPush(t *testing.T) {
func TestSyncFetch(t *testing.T) { func TestSyncFetch(t *testing.T) {
type scenario struct { type scenario struct {
testName string testName string
opts FetchOptions opts FetchOptions
test func(oscommands.ICmdObj) fetchAllConfig bool
test func(oscommands.ICmdObj)
} }
scenarios := []scenario{ scenarios := []scenario{
{ {
testName: "Fetch in foreground", testName: "Fetch in foreground (all=false)",
opts: FetchOptions{Background: false}, opts: FetchOptions{Background: false},
fetchAllConfig: false,
test: func(cmdObj oscommands.ICmdObj) { test: func(cmdObj oscommands.ICmdObj) {
assert.True(t, cmdObj.ShouldLog()) assert.True(t, cmdObj.ShouldLog())
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT) assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
@ -111,20 +113,42 @@ func TestSyncFetch(t *testing.T) {
}, },
}, },
{ {
testName: "Fetch in background", testName: "Fetch in foreground (all=true)",
opts: FetchOptions{Background: true}, opts: FetchOptions{Background: false},
fetchAllConfig: true,
test: func(cmdObj oscommands.ICmdObj) {
assert.True(t, cmdObj.ShouldLog())
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.PROMPT)
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all"})
},
},
{
testName: "Fetch in background (all=false)",
opts: FetchOptions{Background: true},
fetchAllConfig: false,
test: func(cmdObj oscommands.ICmdObj) { test: func(cmdObj oscommands.ICmdObj) {
assert.False(t, cmdObj.ShouldLog()) assert.False(t, cmdObj.ShouldLog())
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL) assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL)
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch"}) assert.Equal(t, cmdObj.Args(), []string{"git", "fetch"})
}, },
}, },
{
testName: "Fetch in background (all=true)",
opts: FetchOptions{Background: true},
fetchAllConfig: true,
test: func(cmdObj oscommands.ICmdObj) {
assert.False(t, cmdObj.ShouldLog())
assert.Equal(t, cmdObj.GetCredentialStrategy(), oscommands.FAIL)
assert.Equal(t, cmdObj.Args(), []string{"git", "fetch", "--all"})
},
},
} }
for _, s := range scenarios { for _, s := range scenarios {
s := s s := s
t.Run(s.testName, func(t *testing.T) { t.Run(s.testName, func(t *testing.T) {
instance := buildSyncCommands(commonDeps{}) instance := buildSyncCommands(commonDeps{})
instance.UserConfig.Git.FetchAll = s.fetchAllConfig
s.test(instance.FetchCmdObj(s.opts)) s.test(instance.FetchCmdObj(s.opts))
}) })
} }

View File

@ -81,6 +81,7 @@ type GitConfig struct {
SkipHookPrefix string `yaml:"skipHookPrefix"` SkipHookPrefix string `yaml:"skipHookPrefix"`
AutoFetch bool `yaml:"autoFetch"` AutoFetch bool `yaml:"autoFetch"`
AutoRefresh bool `yaml:"autoRefresh"` AutoRefresh bool `yaml:"autoRefresh"`
FetchAll bool `yaml:"fetchAll"`
BranchLogCmd string `yaml:"branchLogCmd"` BranchLogCmd string `yaml:"branchLogCmd"`
AllBranchesLogCmd string `yaml:"allBranchesLogCmd"` AllBranchesLogCmd string `yaml:"allBranchesLogCmd"`
OverrideGpg bool `yaml:"overrideGpg"` OverrideGpg bool `yaml:"overrideGpg"`
@ -453,6 +454,7 @@ func GetDefaultConfig() *UserConfig {
MainBranches: []string{"master", "main"}, MainBranches: []string{"master", "main"},
AutoFetch: true, AutoFetch: true,
AutoRefresh: true, AutoRefresh: true,
FetchAll: true,
BranchLogCmd: "git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --", BranchLogCmd: "git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --",
AllBranchesLogCmd: "git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium", AllBranchesLogCmd: "git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium",
DisableForcePushing: false, DisableForcePushing: false,