mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-27 12:32:37 +02:00
make use of branch config when pushing/pulling
This commit is contained in:
parent
6b77e4ee4a
commit
c166c57c5d
@ -404,12 +404,12 @@ func (c *GitCommand) AmendHead() (*exec.Cmd, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Pull pulls from repo
|
// Pull pulls from repo
|
||||||
func (c *GitCommand) Pull(ask func(string) string) error {
|
func (c *GitCommand) Pull(args string, ask func(string) string) error {
|
||||||
return c.OSCommand.DetectUnamePass("git pull --no-edit", ask)
|
return c.OSCommand.DetectUnamePass("git pull --no-edit "+args, ask)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Push pushes to a branch
|
// Push pushes to a branch
|
||||||
func (c *GitCommand) Push(branchName string, force bool, upstream string, ask func(string) string) error {
|
func (c *GitCommand) Push(branchName string, force bool, upstream string, args string, ask func(string) string) error {
|
||||||
forceFlag := ""
|
forceFlag := ""
|
||||||
if force {
|
if force {
|
||||||
forceFlag = "--force-with-lease"
|
forceFlag = "--force-with-lease"
|
||||||
@ -420,7 +420,7 @@ func (c *GitCommand) Push(branchName string, force bool, upstream string, ask fu
|
|||||||
setUpstreamArg = "--set-upstream " + upstream
|
setUpstreamArg = "--set-upstream " + upstream
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := fmt.Sprintf("git push --follow-tags %s %s", forceFlag, setUpstreamArg)
|
cmd := fmt.Sprintf("git push --follow-tags %s %s %s", forceFlag, setUpstreamArg, args)
|
||||||
return c.OSCommand.DetectUnamePass(cmd, ask)
|
return c.OSCommand.DetectUnamePass(cmd, ask)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1015,7 +1015,7 @@ func TestGitCommandPush(t *testing.T) {
|
|||||||
t.Run(s.testName, func(t *testing.T) {
|
t.Run(s.testName, func(t *testing.T) {
|
||||||
gitCmd := NewDummyGitCommand()
|
gitCmd := NewDummyGitCommand()
|
||||||
gitCmd.OSCommand.command = s.command
|
gitCmd.OSCommand.command = s.command
|
||||||
err := gitCmd.Push("test", s.forcePush, "", func(passOrUname string) string {
|
err := gitCmd.Push("test", s.forcePush, "", "", func(passOrUname string) string {
|
||||||
return "\n"
|
return "\n"
|
||||||
})
|
})
|
||||||
s.test(err)
|
s.test(err)
|
||||||
|
@ -393,6 +393,17 @@ func (gui *Gui) handlePullFiles(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if pullables == "?" {
|
if pullables == "?" {
|
||||||
|
// see if we have this branch in our config with an upstream
|
||||||
|
conf, err := gui.GitCommand.Repo.Config()
|
||||||
|
if err != nil {
|
||||||
|
return gui.createErrorPanel(gui.g, err.Error())
|
||||||
|
}
|
||||||
|
for branchName, branch := range conf.Branches {
|
||||||
|
if branchName == currentBranchName {
|
||||||
|
return gui.pullFiles(v, fmt.Sprintf("%s %s", branch.Remote, branchName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return gui.createPromptPanel(g, v, gui.Tr.SLocalize("EnterUpstream"), "origin/"+currentBranchName, func(g *gocui.Gui, v *gocui.View) error {
|
return gui.createPromptPanel(g, v, gui.Tr.SLocalize("EnterUpstream"), "origin/"+currentBranchName, func(g *gocui.Gui, v *gocui.View) error {
|
||||||
upstream := gui.trimmedContent(v)
|
upstream := gui.trimmedContent(v)
|
||||||
if err := gui.GitCommand.SetUpstreamBranch(upstream); err != nil {
|
if err := gui.GitCommand.SetUpstreamBranch(upstream); err != nil {
|
||||||
@ -402,21 +413,21 @@ func (gui *Gui) handlePullFiles(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
return gui.createErrorPanel(gui.g, errorMessage)
|
return gui.createErrorPanel(gui.g, errorMessage)
|
||||||
}
|
}
|
||||||
return gui.pullFiles(v)
|
return gui.pullFiles(v, "")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return gui.pullFiles(v)
|
return gui.pullFiles(v, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) pullFiles(v *gocui.View) error {
|
func (gui *Gui) pullFiles(v *gocui.View, args string) error {
|
||||||
if err := gui.createLoaderPanel(gui.g, v, gui.Tr.SLocalize("PullWait")); err != nil {
|
if err := gui.createLoaderPanel(gui.g, v, gui.Tr.SLocalize("PullWait")); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
unamePassOpend := false
|
unamePassOpend := false
|
||||||
err := gui.GitCommand.Pull(func(passOrUname string) string {
|
err := gui.GitCommand.Pull(args, func(passOrUname string) string {
|
||||||
unamePassOpend = true
|
unamePassOpend = true
|
||||||
return gui.waitForPassUname(gui.g, v, passOrUname)
|
return gui.waitForPassUname(gui.g, v, passOrUname)
|
||||||
})
|
})
|
||||||
@ -426,14 +437,14 @@ func (gui *Gui) pullFiles(v *gocui.View) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) pushWithForceFlag(g *gocui.Gui, v *gocui.View, force bool, upstream string) error {
|
func (gui *Gui) pushWithForceFlag(g *gocui.Gui, v *gocui.View, force bool, upstream string, args string) error {
|
||||||
if err := gui.createLoaderPanel(gui.g, v, gui.Tr.SLocalize("PushWait")); err != nil {
|
if err := gui.createLoaderPanel(gui.g, v, gui.Tr.SLocalize("PushWait")); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
go func() {
|
go func() {
|
||||||
unamePassOpend := false
|
unamePassOpend := false
|
||||||
branchName := gui.getCheckedOutBranch().Name
|
branchName := gui.getCheckedOutBranch().Name
|
||||||
err := gui.GitCommand.Push(branchName, force, upstream, func(passOrUname string) string {
|
err := gui.GitCommand.Push(branchName, force, upstream, args, func(passOrUname string) string {
|
||||||
unamePassOpend = true
|
unamePassOpend = true
|
||||||
return gui.waitForPassUname(g, v, passOrUname)
|
return gui.waitForPassUname(g, v, passOrUname)
|
||||||
})
|
})
|
||||||
@ -451,14 +462,25 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if pullables == "?" {
|
if pullables == "?" {
|
||||||
|
// see if we have this branch in our config with an upstream
|
||||||
|
conf, err := gui.GitCommand.Repo.Config()
|
||||||
|
if err != nil {
|
||||||
|
return gui.createErrorPanel(gui.g, err.Error())
|
||||||
|
}
|
||||||
|
for branchName, branch := range conf.Branches {
|
||||||
|
if branchName == currentBranchName {
|
||||||
|
return gui.pushWithForceFlag(g, v, false, "", fmt.Sprintf("%s %s", branch.Remote, branchName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return gui.createPromptPanel(g, v, gui.Tr.SLocalize("EnterUpstream"), "origin "+currentBranchName, func(g *gocui.Gui, v *gocui.View) error {
|
return gui.createPromptPanel(g, v, gui.Tr.SLocalize("EnterUpstream"), "origin "+currentBranchName, func(g *gocui.Gui, v *gocui.View) error {
|
||||||
return gui.pushWithForceFlag(g, v, false, gui.trimmedContent(v))
|
return gui.pushWithForceFlag(g, v, false, gui.trimmedContent(v), "")
|
||||||
})
|
})
|
||||||
} else if pullables == "0" {
|
} else if pullables == "0" {
|
||||||
return gui.pushWithForceFlag(g, v, false, "")
|
return gui.pushWithForceFlag(g, v, false, "", "")
|
||||||
}
|
}
|
||||||
return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("ForcePush"), gui.Tr.SLocalize("ForcePushPrompt"), func(g *gocui.Gui, v *gocui.View) error {
|
return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("ForcePush"), gui.Tr.SLocalize("ForcePushPrompt"), func(g *gocui.Gui, v *gocui.View) error {
|
||||||
return gui.pushWithForceFlag(g, v, true, "")
|
return gui.pushWithForceFlag(g, v, true, "", "")
|
||||||
}, nil)
|
}, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user