summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-06-07 12:47:19 +0200
committerGitHub <noreply@github.com>2023-06-07 12:47:19 +0200
commite229e26fbe050eb4ba9ffed8970b3992590a3694 (patch)
tree70e3e217378e10309cbe321b105189f655bac29f
parent0080684c7c3db101aaaf1b54c501c0a6e24ba54a (diff)
parent5c55ce6555bd427bdb7ae21d482494a13d08c547 (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.go8
-rw-r--r--pkg/gui/controllers/commits_files_controller.go13
-rw-r--r--pkg/i18n/english.go8
-rw-r--r--pkg/integration/tests/commit/discard_old_file_change.go2
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().