diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-01-07 20:12:36 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-01-07 20:26:01 +1100 |
commit | eb2bfd3848bc5178670380f77b675a27d94d2515 (patch) | |
tree | 7cc71d45667144061a9ced2cc1b9e04afa1a0d45 /pkg | |
parent | adb5c8fe06107c01003c444c4636f19713ea9404 (diff) |
allow hard resetting to upstream branch
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/commands/git.go | 14 | ||||
-rw-r--r-- | pkg/commands/git_test.go | 8 | ||||
-rw-r--r-- | pkg/gui/files_panel.go | 13 | ||||
-rw-r--r-- | pkg/i18n/english.go | 3 |
4 files changed, 25 insertions, 13 deletions
diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 08eb78edf..ab71f80e3 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -265,7 +265,7 @@ func includesInt(list []int, a int) bool { // ResetAndClean removes all unstaged changes and removes all untracked files func (c *GitCommand) ResetAndClean() error { - if err := c.ResetHardHead(); err != nil { + if err := c.ResetHard("HEAD"); err != nil { return err } @@ -961,14 +961,14 @@ func (c *GitCommand) RemoveUntrackedFiles() error { return c.OSCommand.RunCommand("git clean -fd") } -// ResetHardHead runs `git reset --hard HEAD` -func (c *GitCommand) ResetHardHead() error { - return c.OSCommand.RunCommand("git reset --hard HEAD") +// ResetHardHead runs `git reset --hard` +func (c *GitCommand) ResetHard(ref string) error { + return c.OSCommand.RunCommand("git reset --hard " + ref) } -// ResetSoftHead runs `git reset --soft HEAD` -func (c *GitCommand) ResetSoftHead() error { - return c.OSCommand.RunCommand("git reset --soft HEAD") +// ResetSoft runs `git reset --soft HEAD` +func (c *GitCommand) ResetSoft(ref string) error { + return c.OSCommand.RunCommand("git reset --soft " + ref) } // DiffCommits show diff between commits diff --git a/pkg/commands/git_test.go b/pkg/commands/git_test.go index 4991714f1..0429165de 100644 --- a/pkg/commands/git_test.go +++ b/pkg/commands/git_test.go @@ -2106,10 +2106,11 @@ func TestGitCommandRemoveUntrackedFiles(t *testing.T) { } } -// TestGitCommandResetHardHead is a function. -func TestGitCommandResetHardHead(t *testing.T) { +// TestGitCommandResetHard is a function. +func TestGitCommandResetHard(t *testing.T) { type scenario struct { testName string + ref string command func(string, ...string) *exec.Cmd test func(error) } @@ -2117,6 +2118,7 @@ func TestGitCommandResetHardHead(t *testing.T) { scenarios := []scenario{ { "valid case", + "HEAD", test.CreateMockCommand(t, []*test.CommandSwapper{ { Expect: `git reset --hard HEAD`, @@ -2134,7 +2136,7 @@ func TestGitCommandResetHardHead(t *testing.T) { for _, s := range scenarios { t.Run(s.testName, func(t *testing.T) { gitCmd.OSCommand.command = s.command - s.test(gitCmd.ResetHardHead()) + s.test(gitCmd.ResetHard(s.ref)) }) } } diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 463db817e..aa2e8592e 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -604,14 +604,21 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { description: gui.Tr.SLocalize("softReset"), command: "git reset --soft HEAD", handler: func() error { - return gui.GitCommand.ResetSoftHead() + return gui.GitCommand.ResetSoft("HEAD") }, }, { description: gui.Tr.SLocalize("hardReset"), command: "git reset --hard HEAD", handler: func() error { - return gui.GitCommand.ResetHardHead() + return gui.GitCommand.ResetHard("HEAD") + }, + }, + { + description: gui.Tr.SLocalize("hardResetUpstream"), + command: "git reset --hard @{upstream}", + handler: func() error { + return gui.GitCommand.ResetHard("@{upstream}") }, }, { @@ -624,7 +631,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { handleMenuPress := func(index int) error { if err := options[index].handler(); err != nil { - return err + return gui.createErrorPanel(gui.g, err.Error()) } return gui.refreshFiles() diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 55a607090..c6c423285 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -754,6 +754,9 @@ func addEnglish(i18nObject *i18n.Bundle) error { ID: "hardReset", Other: "hard reset", }, &i18n.Message{ + ID: "hardResetUpstream", + Other: "hard reset to upstream branch", + }, &i18n.Message{ ID: "viewResetOptions", Other: `view reset options`, }, &i18n.Message{ |