diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2023-06-07 12:47:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-07 12:47:19 +0200 |
commit | e229e26fbe050eb4ba9ffed8970b3992590a3694 (patch) | |
tree | 70e3e217378e10309cbe321b105189f655bac29f | |
parent | 0080684c7c3db101aaaf1b54c501c0a6e24ba54a (diff) | |
parent | 5c55ce6555bd427bdb7ae21d482494a13d08c547 (diff) |
Merge pull request #2707 from stefanhaller/better-prompt-for-discarding-old-file-changes
Better prompt for discarding old file changes
-rw-r--r-- | pkg/commands/models/commit_file.go | 8 | ||||
-rw-r--r-- | pkg/gui/controllers/commits_files_controller.go | 13 | ||||
-rw-r--r-- | pkg/i18n/english.go | 8 | ||||
-rw-r--r-- | pkg/integration/tests/commit/discard_old_file_change.go | 2 |
4 files changed, 28 insertions, 3 deletions
diff --git a/pkg/commands/models/commit_file.go b/pkg/commands/models/commit_file.go index 5f68e45b3..45b56d2dd 100644 --- a/pkg/commands/models/commit_file.go +++ b/pkg/commands/models/commit_file.go @@ -15,3 +15,11 @@ func (f *CommitFile) ID() string { func (f *CommitFile) Description() string { return f.Name } + +func (f *CommitFile) Added() bool { + return f.ChangeStatus == "A" +} + +func (f *CommitFile) Deleted() bool { + return f.ChangeStatus == "D" +} diff --git a/pkg/gui/controllers/commits_files_controller.go b/pkg/gui/controllers/commits_files_controller.go index 0cea2bd46..f4acc0d31 100644 --- a/pkg/gui/controllers/commits_files_controller.go +++ b/pkg/gui/controllers/commits_files_controller.go @@ -153,13 +153,24 @@ func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error } func (self *CommitFilesController) discard(node *filetree.CommitFileNode) error { + if node.File == nil { + return self.c.ErrorMsg(self.c.Tr.DiscardNotSupportedForDirectory) + } + if ok, err := self.c.Helpers().PatchBuilding.ValidateNormalWorkingTreeState(); !ok { return err } + prompt := self.c.Tr.DiscardFileChangesPrompt + if node.File.Added() { + prompt = self.c.Tr.DiscardAddedFileChangesPrompt + } else if node.File.Deleted() { + prompt = self.c.Tr.DiscardDeletedFileChangesPrompt + } + return self.c.Confirm(types.ConfirmOpts{ Title: self.c.Tr.DiscardFileChangesTitle, - Prompt: self.c.Tr.DiscardFileChangesPrompt, + Prompt: prompt, HandleConfirm: func() error { return self.c.WithWaitingStatus(self.c.Tr.RebasingStatus, func() error { self.c.LogAction(self.c.Tr.Actions.DiscardOldFileChange) diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 22a00b91c..34d33f1ab 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -268,6 +268,9 @@ type TranslationSet struct { DiscardOldFileChange string DiscardFileChangesTitle string DiscardFileChangesPrompt string + DiscardAddedFileChangesPrompt string + DiscardDeletedFileChangesPrompt string + DiscardNotSupportedForDirectory string DisabledForGPG string CreateRepo string BareRepo string @@ -954,7 +957,10 @@ func EnglishTranslationSet() TranslationSet { CheckoutCommitFile: "Checkout file", 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? If this file was created in this commit, it will be deleted", + DiscardFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file?", + DiscardAddedFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file? The file was added in this commit, so it will be deleted again.", + DiscardDeletedFileChangesPrompt: "Are you sure you want to discard this commit's changes to this file? The file was deleted in this commit, so it will reappear.", + DiscardNotSupportedForDirectory: "Discarding changes is not supported for entire directories. Please use a custom patch for this.", DisabledForGPG: "Feature not available for users using GPG", CreateRepo: "Not in a git repository. Create a new git repository? (y/n): ", BareRepo: "You've attempted to open Lazygit in a bare repo but Lazygit does not yet support bare repos. Open most recent repo? (y/n) ", diff --git a/pkg/integration/tests/commit/discard_old_file_change.go b/pkg/integration/tests/commit/discard_old_file_change.go index c42a0f743..5d5fcc0c8 100644 --- a/pkg/integration/tests/commit/discard_old_file_change.go +++ b/pkg/integration/tests/commit/discard_old_file_change.go @@ -43,7 +43,7 @@ var DiscardOldFileChange = NewIntegrationTest(NewIntegrationTestArgs{ t.ExpectPopup().Confirmation(). Title(Equals("Discard file changes")). - Content(Contains("Are you sure you want to discard this commit's changes to this file?")). + Content(Equals("Are you sure you want to discard this commit's changes to this file? The file was added in this commit, so it will be deleted again.")). Confirm() t.Views().CommitFiles(). |