1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-17 21:18:31 +02: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:
Stefan Haller 2023-06-07 16:40:56 +02:00 committed by GitHub
commit 1489a31e48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 0 deletions

View File

@ -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)
}

View File

@ -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?",

View 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()
},
})

View File

@ -155,6 +155,7 @@ var tests = []*components.IntegrationTest{
stash.CreateBranch,
stash.Drop,
stash.Pop,
stash.PreventDiscardingFileChanges,
stash.Rename,
stash.Stash,
stash.StashAll,