summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-03-12 16:45:46 +0100
committerStefan Haller <stefan@haller-berlin.de>2023-06-07 12:47:03 +0200
commit5c55ce6555bd427bdb7ae21d482494a13d08c547 (patch)
tree70e3e217378e10309cbe321b105189f655bac29f
parent1f801b91e48e5af9a0707f3a2286d9e249785048 (diff)
Better prompt for discarding old file changes
Lazygit knows what kind of file change this is, so there doesn't have to be any "if" in the prompt text.
-rw-r--r--pkg/commands/models/commit_file.go8
-rw-r--r--pkg/gui/controllers/commits_files_controller.go9
-rw-r--r--pkg/i18n/english.go6
-rw-r--r--pkg/integration/tests/commit/discard_old_file_change.go2
4 files changed, 22 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 3e8849d88..f4acc0d31 100644
--- a/pkg/gui/controllers/commits_files_controller.go
+++ b/pkg/gui/controllers/commits_files_controller.go
@@ -161,9 +161,16 @@ func (self *CommitFilesController) discard(node *filetree.CommitFileNode) error
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 4025c6e9d..34d33f1ab 100644
--- a/pkg/i18n/english.go
+++ b/pkg/i18n/english.go
@@ -268,6 +268,8 @@ type TranslationSet struct {
DiscardOldFileChange string
DiscardFileChangesTitle string
DiscardFileChangesPrompt string
+ DiscardAddedFileChangesPrompt string
+ DiscardDeletedFileChangesPrompt string
DiscardNotSupportedForDirectory string
DisabledForGPG string
CreateRepo string
@@ -955,7 +957,9 @@ 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): ",
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().