summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/gui/controllers/commit_message_controller.go4
-rw-r--r--pkg/gui/controllers/helpers/commits_helper.go13
-rw-r--r--pkg/gui/controllers/helpers/working_tree_helper.go2
-rw-r--r--pkg/gui/controllers/local_commits_controller.go2
-rw-r--r--pkg/integration/tests/commit/history.go53
-rw-r--r--pkg/integration/tests/commit/history_complex.go59
-rw-r--r--pkg/integration/tests/test_list.go2
7 files changed, 127 insertions, 8 deletions
diff --git a/pkg/gui/controllers/commit_message_controller.go b/pkg/gui/controllers/commit_message_controller.go
index b0318e8a4..929e647f3 100644
--- a/pkg/gui/controllers/commit_message_controller.go
+++ b/pkg/gui/controllers/commit_message_controller.go
@@ -91,8 +91,10 @@ func (self *CommitMessageController) handleCommitIndexChange(value int) error {
newIndex := currentIndex + value
if newIndex == context.NoCommitIndex {
self.context().SetSelectedIndex(newIndex)
- self.c.Helpers().Commits.SetMessageAndDescriptionInView("")
+ self.c.Helpers().Commits.SetMessageAndDescriptionInView(self.context().GetHistoryMessage())
return nil
+ } else if currentIndex == context.NoCommitIndex {
+ self.context().SetHistoryMessage(self.c.Helpers().Commits.JoinCommitMessageAndDescription())
}
validCommit, err := self.setCommitMessageAtIndex(newIndex)
diff --git a/pkg/gui/controllers/helpers/commits_helper.go b/pkg/gui/controllers/helpers/commits_helper.go
index ce1b3a9e2..262f970de 100644
--- a/pkg/gui/controllers/helpers/commits_helper.go
+++ b/pkg/gui/controllers/helpers/commits_helper.go
@@ -55,7 +55,7 @@ func (self *CommitsHelper) SetMessageAndDescriptionInView(message string) {
self.c.Contexts().CommitMessage.RenderCommitLength()
}
-func (self *CommitsHelper) joinCommitMessageAndDescription() string {
+func (self *CommitsHelper) JoinCommitMessageAndDescription() string {
if len(self.getCommitDescription()) == 0 {
return self.getCommitSummary()
}
@@ -106,7 +106,7 @@ func (self *CommitsHelper) OnCommitSuccess() {
}
func (self *CommitsHelper) HandleCommitConfirm() error {
- fullMessage := self.joinCommitMessageAndDescription()
+ fullMessage := self.JoinCommitMessageAndDescription()
if fullMessage == "" {
return self.c.ErrorMsg(self.c.Tr.CommitWithoutMessageErr)
@@ -122,16 +122,19 @@ func (self *CommitsHelper) HandleCommitConfirm() error {
func (self *CommitsHelper) CloseCommitMessagePanel() error {
if self.c.Contexts().CommitMessage.GetPreserveMessage() {
- message := self.joinCommitMessageAndDescription()
+ message := self.JoinCommitMessageAndDescription()
self.c.Contexts().CommitMessage.SetPreservedMessage(message)
} else {
self.SetMessageAndDescriptionInView("")
}
- return self.EscapeCommitsPanel()
+
+ self.c.Contexts().CommitMessage.SetHistoryMessage("")
+
+ return self.PopCommitMessageContexts()
}
-func (self *CommitsHelper) EscapeCommitsPanel() error {
+func (self *CommitsHelper) PopCommitMessageContexts() error {
return self.c.RemoveContexts(self.commitMessageContexts())
}
diff --git a/pkg/gui/controllers/helpers/working_tree_helper.go b/pkg/gui/controllers/helpers/working_tree_helper.go
index e78c8edf5..2679310f9 100644
--- a/pkg/gui/controllers/helpers/working_tree_helper.go
+++ b/pkg/gui/controllers/helpers/working_tree_helper.go
@@ -111,7 +111,7 @@ func (self *WorkingTreeHelper) HandleCommitPressWithMessage(initialMessage strin
func (self *WorkingTreeHelper) handleCommit(message string) error {
cmdObj := self.c.Git().Commit.CommitCmdObj(message)
self.c.LogAction(self.c.Tr.Actions.Commit)
- _ = self.commitsHelper.EscapeCommitsPanel()
+ _ = self.commitsHelper.PopCommitMessageContexts()
return self.gpgHelper.WithGpgHandling(cmdObj, self.c.Tr.CommittingStatus, func() error {
self.commitsHelper.OnCommitSuccess()
return nil
diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go
index 7e7a22365..7ac6e8671 100644
--- a/pkg/gui/controllers/local_commits_controller.go
+++ b/pkg/gui/controllers/local_commits_controller.go
@@ -279,7 +279,7 @@ func (self *LocalCommitsController) handleReword(message string) error {
return self.c.Error(err)
}
self.c.Helpers().Commits.OnCommitSuccess()
- _ = self.c.Helpers().Commits.EscapeCommitsPanel()
+ _ = self.c.Helpers().Commits.PopCommitMessageContexts()
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
}
diff --git a/pkg/integration/tests/commit/history.go b/pkg/integration/tests/commit/history.go
new file mode 100644
index 000000000..9938ae35a
--- /dev/null
+++ b/pkg/integration/tests/commit/history.go
@@ -0,0 +1,53 @@
+package commit
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var History = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Cycling through commit message history in the commit message panel",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.EmptyCommit("initial commit")
+ shell.EmptyCommit("commit 2")
+ shell.EmptyCommit("commit 3")
+
+ shell.CreateFile("myfile", "myfile content")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Files().
+ IsFocused().
+ PressPrimaryAction(). // stage file
+ Press(keys.Files.CommitChanges)
+
+ t.ExpectPopup().CommitMessagePanel().
+ InitialText(Equals("")).
+ Type("my commit message").
+ SelectPreviousMessage().
+ Content(Equals("commit 3")).
+ SelectPreviousMessage().
+ Content(Equals("commit 2")).
+ SelectPreviousMessage().
+ Content(Equals("initial commit")).
+ SelectPreviousMessage().
+ Content(Equals("initial commit")). // we hit the end
+ SelectNextMessage().
+ Content(Equals("commit 2")).
+ SelectNextMessage().
+ Content(Equals("commit 3")).
+ SelectNextMessage().
+ Content(Equals("my commit message")).
+ SelectNextMessage().
+ Content(Equals("my commit message")). // we hit the beginning
+ Type(" with extra added").
+ Confirm()
+
+ t.Views().Commits().
+ TopLines(
+ Contains("my commit message with extra added").IsSelected(),
+ )
+ },
+})
diff --git a/pkg/integration/tests/commit/history_complex.go b/pkg/integration/tests/commit/history_complex.go
new file mode 100644
index 000000000..e88da4416
--- /dev/null
+++ b/pkg/integration/tests/commit/history_complex.go
@@ -0,0 +1,59 @@
+package commit
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var HistoryComplex = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "More complex flow for cycling commit message history",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.EmptyCommit("initial commit")
+ shell.EmptyCommit("commit 2")
+ shell.EmptyCommit("commit 3")
+
+ shell.CreateFileAndAdd("myfile", "myfile content")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ // We're going to start a new commit message,
+ // then leave and try to reword a commit, then
+ // come back to original message and confirm we haven't lost our message.
+ // This shows that we're storing the preserved message for a new commit separately
+ // to the message when cycling history.
+
+ t.Views().Files().
+ IsFocused().
+ Press(keys.Files.CommitChanges)
+
+ t.ExpectPopup().CommitMessagePanel().
+ InitialText(Equals("")).
+ Type("my commit message").
+ Cancel()
+
+ t.Views().Commits().
+ Focus().
+ SelectedLine(Contains("commit 3")).
+ Press(keys.Commits.RenameCommit)
+
+ t.ExpectPopup().CommitMessagePanel().
+ InitialText(Equals("commit 3")).
+ SelectNextMessage().
+ Content(Equals("")).
+ Type("reworded message").
+ SelectPreviousMessage().
+ Content(Equals("commit 3")).
+ SelectNextMessage().
+ Content(Equals("reworded message")).
+ Cancel()
+
+ t.Views().Files().
+ Focus().
+ Press(keys.Files.CommitChanges)
+
+ t.ExpectPopup().CommitMessagePanel().
+ InitialText(Equals("my commit message"))
+ },
+})
diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go
index 10838c008..8c1d75c6e 100644
--- a/pkg/integration/tests/test_list.go
+++ b/pkg/integration/tests/test_list.go
@@ -49,6 +49,8 @@ var tests = []*components.IntegrationTest{
commit.CommitMultiline,
commit.CreateTag,
commit.DiscardOldFileChange,
+ commit.History,
+ commit.HistoryComplex,
commit.NewBranch,
commit.ResetAuthor,
commit.Revert,