diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 3464215c7..7bcc651cb 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -1109,3 +1109,7 @@ func (c *GitCommand) DeleteTag(tagName string) error { func (c *GitCommand) PushTag(remoteName string, tagName string) error { return c.OSCommand.RunCommand("git push %s %s", remoteName, tagName) } + +func (c *GitCommand) FetchRemote(remoteName string) error { + return c.OSCommand.RunCommand("git fetch %s", remoteName) +} diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 2f82bcfb9..ae0f8f8ad 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -454,6 +454,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { Handler: gui.handleRemoteBranchesEscape, Description: gui.Tr.SLocalize("ReturnToRemotesList"), }, + { + ViewName: "branches", + Contexts: []string{"remotes"}, + Key: 'f', + Modifier: gocui.ModNone, + Handler: gui.handleFetchRemote, + Description: gui.Tr.SLocalize("fetchRemote"), + }, { ViewName: "commits", Key: 's', diff --git a/pkg/gui/remotes_panel.go b/pkg/gui/remotes_panel.go index 90c2c8d59..6964bf108 100644 --- a/pkg/gui/remotes_panel.go +++ b/pkg/gui/remotes_panel.go @@ -176,3 +176,18 @@ func (gui *Gui) handleEditRemote(g *gocui.Gui, v *gocui.View) error { }) }) } + +func (gui *Gui) handleFetchRemote(g *gocui.Gui, v *gocui.View) error { + remote := gui.getSelectedRemote() + if remote == nil { + return nil + } + + return gui.WithWaitingStatus(gui.Tr.SLocalize("FetchingRemoteStatus"), func() error { + if err := gui.GitCommand.FetchRemote(remote.Name); err != nil { + return err + } + + return gui.refreshRemotes() + }) +} diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 10e4d209d..849594872 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -912,6 +912,12 @@ func addEnglish(i18nObject *i18n.Bundle) error { }, &i18n.Message{ ID: "CreateTagTitle", Other: "Tag name:", + }, &i18n.Message{ + ID: "fetchRemote", + Other: "fetch remote", + }, &i18n.Message{ + ID: "FetchingRemoteStatus", + Other: "fetching remote", }, ) }