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

Added username password detect to git pull

This commit is contained in:
mjarkk
2018-11-02 09:54:54 +01:00
parent 0e53a26d6f
commit 5470bb4121
4 changed files with 35 additions and 16 deletions

View File

@ -328,8 +328,8 @@ func (c *GitCommand) Commit(message string, amend bool) (*exec.Cmd, error) {
} }
// Pull pulls from repo // Pull pulls from repo
func (c *GitCommand) Pull() error { func (c *GitCommand) Pull(ask func(string) string) error {
return c.OSCommand.RunCommand("git pull --no-edit") return c.OSCommand.DetectUnamePass("git pull --no-edit", ask)
} }
// Push pushes to a branch // Push pushes to a branch

View File

@ -87,9 +87,8 @@ func (c *OSCommand) DetectUnamePass(command string, ask func(string) string) err
return "" return ""
}) })
if err != nil { if err != nil {
errorCode := err.Error() if errorCode := err.Error(); strings.Contains("exit status 128", errorCode) {
if errorCode == "exit status 128" { errMessage = "exit status 128"
errMessage = errorCode
} }
return errors.New(errMessage) return errors.New(errMessage)
} }

View File

@ -84,6 +84,7 @@ func (gui *Gui) waitForPassUname(g *gocui.Gui, currentView *gocui.View, passOrUn
// wait for username/passwords input // wait for username/passwords input
waitForGroup.Wait() waitForGroup.Wait()
_ = gui.switchFocus(g, pushPassUnameView, currentView)
return unamePassMessage return unamePassMessage
} }

View File

@ -341,31 +341,50 @@ func (gui *Gui) refreshFiles(g *gocui.Gui) error {
} }
func (gui *Gui) pullFiles(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) pullFiles(g *gocui.Gui, v *gocui.View) error {
gui.createMessagePanel(g, v, "", gui.Tr.SLocalize("PullWait")) if err := gui.createMessagePanel(gui.g, v, "", gui.Tr.SLocalize("PullWait")); err != nil {
return err
}
go func() { go func() {
if err := gui.GitCommand.Pull(); err != nil { unamePassOpend := false
gui.createErrorPanel(g, err.Error()) err := gui.GitCommand.Pull(func(passOrUname string) string {
unamePassOpend = true
return gui.waitForPassUname(g, v, passOrUname)
})
if unamePassOpend {
_, _ = g.SetViewOnBottom("pushPassUname")
_ = g.DeleteView("pushPassUname")
}
if err != nil {
errMessage := err.Error()
if errMessage == "exit status 128" {
errMessage = gui.Tr.SLocalize("PassUnameWrong")
}
gui.createErrorPanel(gui.g, errMessage)
} else { } else {
gui.closeConfirmationPrompt(g) _ = gui.closeConfirmationPrompt(gui.g)
gui.refreshCommits(g) _ = gui.refreshCommits(gui.g)
gui.refreshStatus(g) _ = gui.refreshStatus(gui.g)
} }
gui.refreshFiles(g) gui.refreshFiles(g)
}() }()
return nil return nil
} }
func (gui *Gui) pushWithForceFlag(g *gocui.Gui, currentView *gocui.View, force bool) error { func (gui *Gui) pushWithForceFlag(g *gocui.Gui, v *gocui.View, force bool) error {
if err := gui.createMessagePanel(gui.g, currentView, "", gui.Tr.SLocalize("PushWait")); err != nil { if err := gui.createMessagePanel(gui.g, v, "", gui.Tr.SLocalize("PushWait")); err != nil {
return err return err
} }
go func() { go func() {
unamePassOpend := false
branchName := gui.State.Branches[0].Name branchName := gui.State.Branches[0].Name
err := gui.GitCommand.Push(branchName, force, func(passOrUname string) string { err := gui.GitCommand.Push(branchName, force, func(passOrUname string) string {
return gui.waitForPassUname(g, currentView, passOrUname) unamePassOpend = true
return gui.waitForPassUname(g, v, passOrUname)
}) })
if unamePassOpend {
_, _ = g.SetViewOnBottom("pushPassUname") _, _ = g.SetViewOnBottom("pushPassUname")
_ = g.DeleteView("pushPassUname") _ = g.DeleteView("pushPassUname")
}
if err != nil { if err != nil {
errMessage := err.Error() errMessage := err.Error()
if errMessage == "exit status 128" { if errMessage == "exit status 128" {