mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-08 04:01:59 +03:00
Merge pull request #2712 from stefanhaller/discard-changes-only-from-local-commits
Allow discarding changes only from local commits
This commit is contained in:
@ -153,6 +153,11 @@ func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *CommitFilesController) discard(node *filetree.CommitFileNode) error {
|
func (self *CommitFilesController) discard(node *filetree.CommitFileNode) error {
|
||||||
|
parentContext, ok := self.c.CurrentContext().GetParentContext()
|
||||||
|
if !ok || parentContext.GetKey() != context.LOCAL_COMMITS_CONTEXT_KEY {
|
||||||
|
return self.c.ErrorMsg(self.c.Tr.CanOnlyDiscardFromLocalCommits)
|
||||||
|
}
|
||||||
|
|
||||||
if node.File == nil {
|
if node.File == nil {
|
||||||
return self.c.ErrorMsg(self.c.Tr.DiscardNotSupportedForDirectory)
|
return self.c.ErrorMsg(self.c.Tr.DiscardNotSupportedForDirectory)
|
||||||
}
|
}
|
||||||
|
@ -265,6 +265,7 @@ type TranslationSet struct {
|
|||||||
ViewItemFiles string
|
ViewItemFiles string
|
||||||
CommitFilesTitle string
|
CommitFilesTitle string
|
||||||
CheckoutCommitFile string
|
CheckoutCommitFile string
|
||||||
|
CanOnlyDiscardFromLocalCommits string
|
||||||
DiscardOldFileChange string
|
DiscardOldFileChange string
|
||||||
DiscardFileChangesTitle string
|
DiscardFileChangesTitle string
|
||||||
DiscardFileChangesPrompt string
|
DiscardFileChangesPrompt string
|
||||||
@ -955,6 +956,7 @@ func EnglishTranslationSet() TranslationSet {
|
|||||||
ViewItemFiles: "View selected item's files",
|
ViewItemFiles: "View selected item's files",
|
||||||
CommitFilesTitle: "Commit files",
|
CommitFilesTitle: "Commit files",
|
||||||
CheckoutCommitFile: "Checkout file",
|
CheckoutCommitFile: "Checkout file",
|
||||||
|
CanOnlyDiscardFromLocalCommits: "Changes can only be discarded from local commits",
|
||||||
DiscardOldFileChange: "Discard this commit's changes to this file",
|
DiscardOldFileChange: "Discard this commit's changes to this file",
|
||||||
DiscardFileChangesTitle: "Discard file changes",
|
DiscardFileChangesTitle: "Discard file changes",
|
||||||
DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file?",
|
DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file?",
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package stash
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/config"
|
||||||
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||||
|
)
|
||||||
|
|
||||||
|
var PreventDiscardingFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
|
||||||
|
Description: "Check that it is not allowed to discard changes to a file of a stash",
|
||||||
|
ExtraCmdArgs: []string{},
|
||||||
|
Skip: false,
|
||||||
|
SetupConfig: func(config *config.AppConfig) {},
|
||||||
|
SetupRepo: func(shell *Shell) {
|
||||||
|
shell.EmptyCommit("initial commit")
|
||||||
|
shell.CreateFile("file", "content")
|
||||||
|
shell.GitAddAll()
|
||||||
|
shell.Stash("stash one")
|
||||||
|
},
|
||||||
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||||
|
t.Views().Files().IsEmpty()
|
||||||
|
|
||||||
|
t.Views().Stash().
|
||||||
|
Focus().
|
||||||
|
Lines(
|
||||||
|
Contains("stash one").IsSelected(),
|
||||||
|
).
|
||||||
|
PressEnter()
|
||||||
|
|
||||||
|
t.Views().CommitFiles().
|
||||||
|
IsFocused().
|
||||||
|
Lines(
|
||||||
|
Contains("file").IsSelected(),
|
||||||
|
).
|
||||||
|
Press(keys.Universal.Remove)
|
||||||
|
|
||||||
|
t.ExpectPopup().Confirmation().
|
||||||
|
Title(Equals("Error")).
|
||||||
|
Content(Contains("Changes can only be discarded from local commits")).
|
||||||
|
Confirm()
|
||||||
|
},
|
||||||
|
})
|
@ -155,6 +155,7 @@ var tests = []*components.IntegrationTest{
|
|||||||
stash.CreateBranch,
|
stash.CreateBranch,
|
||||||
stash.Drop,
|
stash.Drop,
|
||||||
stash.Pop,
|
stash.Pop,
|
||||||
|
stash.PreventDiscardingFileChanges,
|
||||||
stash.Rename,
|
stash.Rename,
|
||||||
stash.Stash,
|
stash.Stash,
|
||||||
stash.StashAll,
|
stash.StashAll,
|
||||||
|
Reference in New Issue
Block a user