summaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-11-02 20:05:23 +1100
committerJesse Duffield <jessedduffield@gmail.com>2021-11-05 07:58:21 +1100
commitf6ec7babf55c4a43bc8048e8a84970a8de8250b9 (patch)
treeffbfe8d8085feac9c69d1c29a1e44eff8e8ddb3a /pkg
parent802cfb1a0436568c72fc998249f10f8150b352a3 (diff)
add some config
Diffstat (limited to 'pkg')
-rw-r--r--pkg/commands/loading_commits.go7
-rw-r--r--pkg/config/user_config.go13
-rw-r--r--pkg/gui/list_context_config.go19
-rw-r--r--pkg/gui/presentation/commits.go16
4 files changed, 49 insertions, 6 deletions
diff --git a/pkg/commands/loading_commits.go b/pkg/commands/loading_commits.go
index 22f6db6d2..a9553c7c0 100644
--- a/pkg/commands/loading_commits.go
+++ b/pkg/commands/loading_commits.go
@@ -404,10 +404,15 @@ func (c *CommitListBuilder) getLogCmd(opts GetCommitsOptions) *exec.Cmd {
filterFlag = fmt.Sprintf(" --follow -- %s", c.OSCommand.Quote(opts.FilterPath))
}
+ config := c.GitCommand.Config.GetUserConfig().Git.Log
+
+ orderFlag := "--" + config.Order
+
return c.OSCommand.ExecutableFromString(
fmt.Sprintf(
- "git log --topo-order %s --oneline %s %s --abbrev=%d %s",
+ "git log %s %s --oneline %s %s --abbrev=%d %s",
c.OSCommand.Quote(opts.RefName),
+ orderFlag,
prettyFormat,
limitFlag,
20,
diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go
index 485746c0f..4ded99304 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -69,7 +69,9 @@ type GitConfig struct {
OverrideGpg bool `yaml:"overrideGpg"`
DisableForcePushing bool `yaml:"disableForcePushing"`
CommitPrefixes map[string]CommitPrefixConfig `yaml:"commitPrefixes"`
- ParseEmoji bool `yaml:"parseEmoji"`
+ // this shoudl really be under 'gui', not 'git'
+ ParseEmoji bool `yaml:"parseEmoji"`
+ Log LogConfig `yaml:"log"`
}
type PagingConfig struct {
@@ -83,6 +85,11 @@ type MergingConfig struct {
Args string `yaml:"args"`
}
+type LogConfig struct {
+ Order string `yaml:"order"` // one of date-order, reverse, author-date-order, topo-order
+ ShowGraph string `yaml:"showGraph"` // one of always, never, when-maximised
+}
+
type CommitPrefixConfig struct {
Pattern string `yaml:"pattern"`
Replace string `yaml:"replace"`
@@ -338,6 +345,10 @@ func GetDefaultConfig() *UserConfig {
ManualCommit: false,
Args: "",
},
+ Log: LogConfig{
+ Order: "topo-order",
+ ShowGraph: "when-maximised",
+ },
SkipHookPrefix: "WIP",
AutoFetch: true,
BranchLogCmd: "git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --",
diff --git a/pkg/gui/list_context_config.go b/pkg/gui/list_context_config.go
index e9e585b37..3e19eaf75 100644
--- a/pkg/gui/list_context_config.go
+++ b/pkg/gui/list_context_config.go
@@ -1,6 +1,8 @@
package gui
import (
+ "log"
+
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
"github.com/jesseduffield/lazygit/pkg/gui/style"
@@ -173,6 +175,7 @@ func (gui *Gui) branchCommitsListContext() IListContext {
selectedCommitSha,
startIdx,
length,
+ gui.shouldShowGraph(),
)
},
SelectedItem: func() (ListItem, bool) {
@@ -183,6 +186,21 @@ func (gui *Gui) branchCommitsListContext() IListContext {
}
}
+func (gui *Gui) shouldShowGraph() bool {
+ value := gui.Config.GetUserConfig().Git.Log.ShowGraph
+ switch value {
+ case "always":
+ return true
+ case "never":
+ return false
+ case "when-maximised":
+ return gui.State.ScreenMode != SCREEN_NORMAL
+ }
+
+ log.Fatalf("Unknown value for git.log.showGraph: %s. Expected one of: 'always', 'never', 'when-maximised'", value)
+ return false
+}
+
func (gui *Gui) reflogCommitsListContext() IListContext {
parseEmoji := gui.Config.GetUserConfig().Git.ParseEmoji
return &ListContext{
@@ -242,6 +260,7 @@ func (gui *Gui) subCommitsListContext() IListContext {
selectedCommitSha,
0,
len(gui.State.SubCommits),
+ gui.shouldShowGraph(),
)
},
SelectedItem: func() (ListItem, bool) {
diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go
index 2a24437c9..c4a02df29 100644
--- a/pkg/gui/presentation/commits.go
+++ b/pkg/gui/presentation/commits.go
@@ -30,6 +30,7 @@ func GetCommitListDisplayStrings(
selectedCommitSha string,
startIdx int,
length int,
+ showGraph bool,
) [][]string {
mutex.Lock()
defer mutex.Unlock()
@@ -61,13 +62,20 @@ func GetCommitListDisplayStrings(
end = len(commits) - 1
}
- filteredPipeSets := pipeSets[startIdx : end+1]
filteredCommits := commits[startIdx : end+1]
- graphLines := graph.RenderAux(filteredPipeSets, filteredCommits, selectedCommitSha)
- lines := make([][]string, 0, len(graphLines))
+ var getGraphLine func(int) string
+ if showGraph {
+ filteredPipeSets := pipeSets[startIdx : end+1]
+ graphLines := graph.RenderAux(filteredPipeSets, filteredCommits, selectedCommitSha)
+ getGraphLine = func(idx int) string { return graphLines[idx] }
+ } else {
+ getGraphLine = func(idx int) string { return "" }
+ }
+
+ lines := make([][]string, 0, len(filteredCommits))
for i, commit := range filteredCommits {
- lines = append(lines, displayCommit(commit, cherryPickedCommitShaMap, diffName, parseEmoji, graphLines[i], fullDescription))
+ lines = append(lines, displayCommit(commit, cherryPickedCommitShaMap, diffName, parseEmoji, getGraphLine(i), fullDescription))
}
return lines
}