summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2023-05-02 18:59:12 +1000
committerGitHub <noreply@github.com>2023-05-02 18:59:12 +1000
commit4160fa518c3c3c98e5139e2b446d7bb2870e7df3 (patch)
tree4a392f72b94cff2512fab7bd62bccc45bf928a4b
parentc6c4346d4886dbfcfe3a164170f99936734febd8 (diff)
parentfba1a2b5aceba3098ad9ffb4cacc19073de0e910 (diff)
Merge pull request #2582 from stefanhaller/config-for-showing-branch-heads
-rw-r--r--docs/Config.md1
-rw-r--r--pkg/config/user_config.go78
-rw-r--r--pkg/gui/presentation/commits.go2
-rw-r--r--pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go12
-rw-r--r--pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref_show_branch_heads.go62
-rw-r--r--pkg/integration/tests/test_list.go1
6 files changed, 111 insertions, 45 deletions
diff --git a/docs/Config.md b/docs/Config.md
index 837230367..34e89c130 100644
--- a/docs/Config.md
+++ b/docs/Config.md
@@ -57,6 +57,7 @@ gui:
showFileTree: true # for rendering changes files in a tree format
showListFooter: true # for seeing the '5 of 20' message in list panels
showRandomTip: true
+ experimentalShowBranchHeads: false # visualize branch heads with (*) in commits list
showBottomLine: true # for hiding the bottom information line (unless it has important information to tell you)
showCommandLog: true
showIcons: false
diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go
index fb36bb7ea..82361ddbd 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -27,32 +27,33 @@ type RefresherConfig struct {
}
type GuiConfig struct {
- AuthorColors map[string]string `yaml:"authorColors"`
- BranchColors map[string]string `yaml:"branchColors"`
- ScrollHeight int `yaml:"scrollHeight"`
- ScrollPastBottom bool `yaml:"scrollPastBottom"`
- MouseEvents bool `yaml:"mouseEvents"`
- SkipUnstageLineWarning bool `yaml:"skipUnstageLineWarning"`
- SkipStashWarning bool `yaml:"skipStashWarning"`
- SidePanelWidth float64 `yaml:"sidePanelWidth"`
- ExpandFocusedSidePanel bool `yaml:"expandFocusedSidePanel"`
- MainPanelSplitMode string `yaml:"mainPanelSplitMode"`
- Language string `yaml:"language"`
- TimeFormat string `yaml:"timeFormat"`
- Theme ThemeConfig `yaml:"theme"`
- CommitLength CommitLengthConfig `yaml:"commitLength"`
- SkipNoStagedFilesWarning bool `yaml:"skipNoStagedFilesWarning"`
- ShowListFooter bool `yaml:"showListFooter"`
- ShowFileTree bool `yaml:"showFileTree"`
- ShowRandomTip bool `yaml:"showRandomTip"`
- ShowCommandLog bool `yaml:"showCommandLog"`
- ShowBottomLine bool `yaml:"showBottomLine"`
- ShowIcons bool `yaml:"showIcons"`
- CommandLogSize int `yaml:"commandLogSize"`
- SplitDiff string `yaml:"splitDiff"`
- SkipRewordInEditorWarning bool `yaml:"skipRewordInEditorWarning"`
- WindowSize string `yaml:"windowSize"`
- Border string `yaml:"border"`
+ AuthorColors map[string]string `yaml:"authorColors"`
+ BranchColors map[string]string `yaml:"branchColors"`
+ ScrollHeight int `yaml:"scrollHeight"`
+ ScrollPastBottom bool `yaml:"scrollPastBottom"`
+ MouseEvents bool `yaml:"mouseEvents"`
+ SkipUnstageLineWarning bool `yaml:"skipUnstageLineWarning"`
+ SkipStashWarning bool `yaml:"skipStashWarning"`
+ SidePanelWidth float64 `yaml:"sidePanelWidth"`
+ ExpandFocusedSidePanel bool `yaml:"expandFocusedSidePanel"`
+ MainPanelSplitMode string `yaml:"mainPanelSplitMode"`
+ Language string `yaml:"language"`
+ TimeFormat string `yaml:"timeFormat"`
+ Theme ThemeConfig `yaml:"theme"`
+ CommitLength CommitLengthConfig `yaml:"commitLength"`
+ SkipNoStagedFilesWarning bool `yaml:"skipNoStagedFilesWarning"`
+ ShowListFooter bool `yaml:"showListFooter"`
+ ShowFileTree bool `yaml:"showFileTree"`
+ ShowRandomTip bool `yaml:"showRandomTip"`
+ ShowCommandLog bool `yaml:"showCommandLog"`
+ ShowBottomLine bool `yaml:"showBottomLine"`
+ ShowIcons bool `yaml:"showIcons"`
+ ExperimentalShowBranchHeads bool `yaml:"experimentalShowBranchHeads"`
+ CommandLogSize int `yaml:"commandLogSize"`
+ SplitDiff string `yaml:"splitDiff"`
+ SkipRewordInEditorWarning bool `yaml:"skipRewordInEditorWarning"`
+ WindowSize string `yaml:"windowSize"`
+ Border string `yaml:"border"`
}
type ThemeConfig struct {
@@ -408,18 +409,19 @@ func GetDefaultConfig() *UserConfig {
UnstagedChangesColor: []string{"red"},
DefaultFgColor: []string{"default"},
},
- CommitLength: CommitLengthConfig{Show: true},
- SkipNoStagedFilesWarning: false,
- ShowListFooter: true,
- ShowCommandLog: true,
- ShowBottomLine: true,
- ShowFileTree: true,
- ShowRandomTip: true,
- ShowIcons: false,
- CommandLogSize: 8,
- SplitDiff: "auto",
- SkipRewordInEditorWarning: false,
- Border: "single",
+ CommitLength: CommitLengthConfig{Show: true},
+ SkipNoStagedFilesWarning: false,
+ ShowListFooter: true,
+ ShowCommandLog: true,
+ ShowBottomLine: true,
+ ShowFileTree: true,
+ ShowRandomTip: true,
+ ShowIcons: false,
+ ExperimentalShowBranchHeads: false,
+ CommandLogSize: 8,
+ SplitDiff: "auto",
+ SkipRewordInEditorWarning: false,
+ Border: "single",
},
Git: GitConfig{
Paging: PagingConfig{
diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go
index 7e16197b5..6b83456b9 100644
--- a/pkg/gui/presentation/commits.go
+++ b/pkg/gui/presentation/commits.go
@@ -277,7 +277,7 @@ func displayCommit(
} else {
if len(commit.Tags) > 0 {
tagString = theme.DiffTerminalColor.SetBold().Sprint(strings.Join(commit.Tags, " ")) + " "
- } else if commit.ExtraInfo != "" {
+ } else if common.UserConfig.Gui.ExperimentalShowBranchHeads && commit.ExtraInfo != "" {
tagString = style.FgMagenta.SetBold().Sprint("(*)") + " "
}
}
diff --git a/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go b/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go
index fcbf1abe5..ace5bed40 100644
--- a/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go
+++ b/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go
@@ -23,10 +23,10 @@ var DropTodoCommitWithUpdateRef = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Commits().
Focus().
Lines(
- Contains("(*) commit 06").IsSelected(),
+ Contains("commit 06").IsSelected(),
Contains("commit 05"),
Contains("commit 04"),
- Contains("(*) commit 03"),
+ Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
).
@@ -34,11 +34,11 @@ var DropTodoCommitWithUpdateRef = NewIntegrationTest(NewIntegrationTestArgs{
Press(keys.Universal.Edit).
Focus().
Lines(
- Contains("pick").Contains("(*) commit 06"),
+ Contains("pick").Contains("commit 06"),
Contains("pick").Contains("commit 05"),
Contains("pick").Contains("commit 04"),
Contains("update-ref").Contains("master"),
- Contains("pick").Contains("(*) commit 03"),
+ Contains("pick").Contains("commit 03"),
Contains("pick").Contains("commit 02"),
Contains("<-- YOU ARE HERE --- commit 01"),
).
@@ -50,9 +50,9 @@ var DropTodoCommitWithUpdateRef = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Commits().
IsFocused().
Lines(
- Contains("(*) commit 06"),
+ Contains("commit 06"),
Contains("commit 04"),
- Contains("(*) commit 03"),
+ Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
)
diff --git a/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref_show_branch_heads.go b/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref_show_branch_heads.go
new file mode 100644
index 000000000..cb42ce989
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref_show_branch_heads.go
@@ -0,0 +1,62 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var DropTodoCommitWithUpdateRefShowBranchHeads = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Drops a commit during interactive rebase when there is an update-ref in the git-rebase-todo file (with experimentalShowBranchHeads on)",
+ ExtraCmdArgs: "",
+ Skip: false,
+ GitVersion: From("2.38.0"),
+ SetupConfig: func(config *config.AppConfig) {
+ config.UserConfig.Gui.ExperimentalShowBranchHeads = true
+ },
+ SetupRepo: func(shell *Shell) {
+ shell.
+ CreateNCommits(3).
+ NewBranch("mybranch").
+ CreateNCommitsStartingAt(3, 4)
+
+ shell.SetConfig("rebase.updateRefs", "true")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("(*) commit 06").IsSelected(),
+ Contains("commit 05"),
+ Contains("commit 04"),
+ Contains("(*) commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ NavigateToLine(Contains("commit 01")).
+ Press(keys.Universal.Edit).
+ Focus().
+ Lines(
+ Contains("pick").Contains("(*) commit 06"),
+ Contains("pick").Contains("commit 05"),
+ Contains("pick").Contains("commit 04"),
+ Contains("update-ref").Contains("master"),
+ Contains("pick").Contains("(*) commit 03"),
+ Contains("pick").Contains("commit 02"),
+ Contains("<-- YOU ARE HERE --- commit 01"),
+ ).
+ NavigateToLine(Contains("commit 05")).
+ Press(keys.Universal.Remove)
+
+ t.Common().ContinueRebase()
+
+ t.Views().Commits().
+ IsFocused().
+ Lines(
+ Contains("(*) commit 06"),
+ Contains("commit 04"),
+ Contains("(*) commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ )
+ },
+})
diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go
index 1bb581614..b2cb12e14 100644
--- a/pkg/integration/tests/test_list.go
+++ b/pkg/integration/tests/test_list.go
@@ -93,6 +93,7 @@ var tests = []*components.IntegrationTest{
interactive_rebase.AmendMerge,
interactive_rebase.AmendNonHeadCommitDuringRebase,
interactive_rebase.DropTodoCommitWithUpdateRef,
+ interactive_rebase.DropTodoCommitWithUpdateRefShowBranchHeads,
interactive_rebase.EditFirstCommit,
interactive_rebase.EditNonTodoCommitDuringRebase,
interactive_rebase.FixupFirstCommit,