mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-03 13:21:56 +02:00
Allow discarding changes only from local commits
We use CommitFilesController also for the files of commits that we show elsewhere, e.g. for branch commits, tags, or stashes. It doesn't make sense to discard changes from those (for stashes it might be possible to implement it somehow, but that would be a new feature), so we disallow it unless we are in the local commits panel.
This commit is contained in:
parent
e229e26fbe
commit
1f42c8a387
@ -153,6 +153,11 @@ func (self *CommitFilesController) checkout(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 {
|
||||
return self.c.ErrorMsg(self.c.Tr.DiscardNotSupportedForDirectory)
|
||||
}
|
||||
|
@ -265,6 +265,7 @@ type TranslationSet struct {
|
||||
ViewItemFiles string
|
||||
CommitFilesTitle string
|
||||
CheckoutCommitFile string
|
||||
CanOnlyDiscardFromLocalCommits string
|
||||
DiscardOldFileChange string
|
||||
DiscardFileChangesTitle string
|
||||
DiscardFileChangesPrompt string
|
||||
@ -955,6 +956,7 @@ func EnglishTranslationSet() TranslationSet {
|
||||
ViewItemFiles: "View selected item's files",
|
||||
CommitFilesTitle: "Commit files",
|
||||
CheckoutCommitFile: "Checkout file",
|
||||
CanOnlyDiscardFromLocalCommits: "Changes can only be discarded from local commits",
|
||||
DiscardOldFileChange: "Discard this commit's changes to this file",
|
||||
DiscardFileChangesTitle: "Discard file changes",
|
||||
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.Drop,
|
||||
stash.Pop,
|
||||
stash.PreventDiscardingFileChanges,
|
||||
stash.Rename,
|
||||
stash.Stash,
|
||||
stash.StashAll,
|
||||
|
Loading…
x
Reference in New Issue
Block a user