summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-03-12 16:52:02 +0100
committerStefan Haller <stefan@haller-berlin.de>2023-06-07 12:47:03 +0200
commit1f801b91e48e5af9a0707f3a2286d9e249785048 (patch)
tree7d96d7f7633688583f57f498f05e9a1250d763a5
parent0080684c7c3db101aaaf1b54c501c0a6e24ba54a (diff)
Disallow discarding file changes while a directory is selected
Discarding changes to an entire directory doesn't quite work correctly in all cases; for example, if the current commit added files to the directory (but the directory existed before) then those files won't be removed. It might be possible to fix the command so that these cases always work for directories, but I don't think it's worth the effort (you can always use a custom patch for that), so let's display an error for now.
-rw-r--r--pkg/gui/controllers/commits_files_controller.go4
-rw-r--r--pkg/i18n/english.go2
2 files changed, 6 insertions, 0 deletions
diff --git a/pkg/gui/controllers/commits_files_controller.go b/pkg/gui/controllers/commits_files_controller.go
index 0cea2bd46..3e8849d88 100644
--- a/pkg/gui/controllers/commits_files_controller.go
+++ b/pkg/gui/controllers/commits_files_controller.go
@@ -153,6 +153,10 @@ 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
}
diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go
index 22a00b91c..4025c6e9d 100644
--- a/pkg/i18n/english.go
+++ b/pkg/i18n/english.go
@@ -268,6 +268,7 @@ type TranslationSet struct {
DiscardOldFileChange string
DiscardFileChangesTitle string
DiscardFileChangesPrompt string
+ DiscardNotSupportedForDirectory string
DisabledForGPG string
CreateRepo string
BareRepo string
@@ -955,6 +956,7 @@ func EnglishTranslationSet() TranslationSet {
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",
+ 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) ",