From a63d5c5644ef0cd28b5a50b3e218447e2efc5aee Mon Sep 17 00:00:00 2001
From: Jesse Duffield
Date: Wed, 9 Nov 2022 19:54:11 +1100
Subject: [PATCH 1/9] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 44fc5c640..1b47f65b3 100644
--- a/README.md
+++ b/README.md
@@ -301,9 +301,9 @@ See the [docs](docs/Custom_Command_Keybindings.md)
## Contributing
We love your input! Please check out the [contributing guide](CONTRIBUTING.md).
-For contributor discussion about things not better discussed here in the repo, join the slack channel
+For contributor discussion about things not better discussed here in the repo, join the discord channel
-[](https://join.slack.com/t/lazygit/shared_invite/zt-5bo2clzo-hB8ZTVN5dWUCqj5QFiQVLA)
+[](https://discord.gg/ehwFt2t4wt)
Check out this [video](https://www.youtube.com/watch?v=kNavnhzZHtk) walking through the creation of a small feature in lazygit if you want an idea of where to get started.
From 4f471f352f7255dc7b71a159324706e2f30ef808 Mon Sep 17 00:00:00 2001
From: README-bot
Date: Wed, 9 Nov 2022 08:54:28 +0000
Subject: [PATCH 2/9] Updated README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 1b47f65b3..e7071dc5f 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi
-



























































+























































## Elevator Pitch
From cc01c0de6dc643efcda1a07ec01c49715183e96c Mon Sep 17 00:00:00 2001
From: Jesse Duffield
Date: Wed, 9 Nov 2022 19:57:26 +1100
Subject: [PATCH 3/9] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e7071dc5f..77afcd72b 100644
--- a/README.md
+++ b/README.md
@@ -303,7 +303,7 @@ See the [docs](docs/Custom_Command_Keybindings.md)
We love your input! Please check out the [contributing guide](CONTRIBUTING.md).
For contributor discussion about things not better discussed here in the repo, join the discord channel
-[](https://discord.gg/ehwFt2t4wt)
+
Check out this [video](https://www.youtube.com/watch?v=kNavnhzZHtk) walking through the creation of a small feature in lazygit if you want an idea of where to get started.
From ab03cf8bcf1bac5a9357119f10aa69834e10a965 Mon Sep 17 00:00:00 2001
From: Jesse Duffield
Date: Wed, 9 Nov 2022 21:14:14 +1100
Subject: [PATCH 4/9] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 77afcd72b..dba27162e 100644
--- a/README.md
+++ b/README.md
@@ -303,7 +303,7 @@ See the [docs](docs/Custom_Command_Keybindings.md)
We love your input! Please check out the [contributing guide](CONTRIBUTING.md).
For contributor discussion about things not better discussed here in the repo, join the discord channel
-
+
Check out this [video](https://www.youtube.com/watch?v=kNavnhzZHtk) walking through the creation of a small feature in lazygit if you want an idea of where to get started.
From e8b97c9fe2db8d39084789a8503db4cbadcdde42 Mon Sep 17 00:00:00 2001
From: Jesse Duffield
Date: Fri, 11 Nov 2022 12:16:38 +1100
Subject: [PATCH 5/9] fix could-not-access error
---
pkg/commands/git_commands/working_tree.go | 2 +-
pkg/commands/models/file.go | 5 +++
pkg/gui/filetree/file_node.go | 4 +++
pkg/integration/components/shell.go | 9 +++++
.../tests/file/dir_with_untracked_file.go | 32 ++++++++++++++++++
pkg/integration/tests/tests.go | 2 ++
.../expected/repo/.git_keep/COMMIT_EDITMSG | 1 +
.../expected/repo/.git_keep/FETCH_HEAD | 0
.../expected/repo/.git_keep/HEAD | 1 +
.../expected/repo/.git_keep/config | 12 +++++++
.../expected/repo/.git_keep/description | 1 +
.../expected/repo/.git_keep/index | Bin 0 -> 165 bytes
.../expected/repo/.git_keep/info/exclude | 7 ++++
.../expected/repo/.git_keep/logs/HEAD | 1 +
.../repo/.git_keep/logs/refs/heads/master | 1 +
.../19/102815663d23f8b75a47e7a01965dcdc96468c | Bin 0 -> 18 bytes
.../76/3788c33660f53eecaecce8dae27c34e647ac57 | Bin 0 -> 121 bytes
.../87/a5800c820f9b267ff243860bceb24b04af76a2 | Bin 0 -> 49 bytes
.../a9/63b9597d0f4f0b9995472e5eff3622b136a4b5 | Bin 0 -> 45 bytes
.../expected/repo/.git_keep/refs/heads/master | 1 +
.../expected/repo/dir/file | 1 +
.../expected/repo/dir/untracked | 1 +
22 files changed, 80 insertions(+), 1 deletion(-)
create mode 100644 pkg/integration/tests/file/dir_with_untracked_file.go
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/COMMIT_EDITMSG
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/FETCH_HEAD
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/HEAD
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/config
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/description
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/index
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/info/exclude
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/logs/HEAD
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/logs/refs/heads/master
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/19/102815663d23f8b75a47e7a01965dcdc96468c
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/76/3788c33660f53eecaecce8dae27c34e647ac57
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/87/a5800c820f9b267ff243860bceb24b04af76a2
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/a9/63b9597d0f4f0b9995472e5eff3622b136a4b5
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/refs/heads/master
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/dir/file
create mode 100644 test/integration_new/file/dir_with_untracked_file/expected/repo/dir/untracked
diff --git a/pkg/commands/git_commands/working_tree.go b/pkg/commands/git_commands/working_tree.go
index 8fd1fb177..9c02d4300 100644
--- a/pkg/commands/git_commands/working_tree.go
+++ b/pkg/commands/git_commands/working_tree.go
@@ -241,7 +241,7 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain
if cached {
cachedArg = " --cached"
}
- if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached {
+ if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached && node.GetIsFile() {
trackedArg = "--no-index -- /dev/null"
}
if plain {
diff --git a/pkg/commands/models/file.go b/pkg/commands/models/file.go
index eeb540def..dbe015cf1 100644
--- a/pkg/commands/models/file.go
+++ b/pkg/commands/models/file.go
@@ -29,6 +29,7 @@ type IFile interface {
GetIsTracked() bool
GetPath() string
GetPreviousPath() string
+ GetIsFile() bool
}
func (f *File) IsRename() bool {
@@ -92,6 +93,10 @@ func (f *File) GetPreviousPath() string {
return f.PreviousName
}
+func (f *File) GetIsFile() bool {
+ return true
+}
+
type StatusFields struct {
HasStagedChanges bool
HasUnstagedChanges bool
diff --git a/pkg/gui/filetree/file_node.go b/pkg/gui/filetree/file_node.go
index 2ff707113..abfdbafe6 100644
--- a/pkg/gui/filetree/file_node.go
+++ b/pkg/gui/filetree/file_node.go
@@ -42,6 +42,10 @@ func (self *FileNode) GetIsTracked() bool {
return self.SomeFile(func(file *models.File) bool { return file.Tracked })
}
+func (self *FileNode) GetIsFile() bool {
+ return self.IsFile()
+}
+
func (self *FileNode) GetPreviousPath() string {
if self.File == nil {
return ""
diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go
index 1d8182edb..95b601783 100644
--- a/pkg/integration/components/shell.go
+++ b/pkg/integration/components/shell.go
@@ -45,6 +45,15 @@ func (s *Shell) CreateFile(path string, content string) *Shell {
return s
}
+func (s *Shell) CreateDir(path string) *Shell {
+ fullPath := filepath.Join(s.dir, path)
+ if err := os.MkdirAll(fullPath, 0o755); err != nil {
+ panic(fmt.Sprintf("error creating directory: %s\n%s", fullPath, err))
+ }
+
+ return s
+}
+
func (s *Shell) UpdateFile(path string, content string) *Shell {
fullPath := filepath.Join(s.dir, path)
err := os.WriteFile(fullPath, []byte(content), 0o644)
diff --git a/pkg/integration/tests/file/dir_with_untracked_file.go b/pkg/integration/tests/file/dir_with_untracked_file.go
new file mode 100644
index 000000000..c67745c65
--- /dev/null
+++ b/pkg/integration/tests/file/dir_with_untracked_file.go
@@ -0,0 +1,32 @@
+package file
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var DirWithUntrackedFile = NewIntegrationTest(NewIntegrationTestArgs{
+ // notably, we currently _don't_ actually see the untracked file in the diff. Not sure how to get around that.
+ Description: "When selecting a directory that contains an untracked file, we should not get an error",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {
+ config.UserConfig.Gui.ShowFileTree = true
+ },
+ SetupRepo: func(shell *Shell) {
+ shell.CreateDir("dir")
+ shell.CreateFile("dir/file", "foo")
+ shell.GitAddAll()
+ shell.Commit("first commit")
+ shell.CreateFile("dir/untracked", "bar")
+ shell.UpdateFile("dir/file", "baz")
+ },
+ Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) {
+ assert.CommitCount(1)
+
+ assert.MatchMainViewContent(NotContains("error: Could not access"))
+ // we show baz because it's a modified file but we don't show bar because it's untracked
+ // (though it would be cool if we could show that too)
+ assert.MatchMainViewContent(Contains("baz"))
+ },
+})
diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go
index 6b4583e6d..5c891a4e3 100644
--- a/pkg/integration/tests/tests.go
+++ b/pkg/integration/tests/tests.go
@@ -15,6 +15,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
+ "github.com/jesseduffield/lazygit/pkg/integration/tests/file"
"github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase"
"github.com/jesseduffield/lazygit/pkg/integration/tests/stash"
)
@@ -40,6 +41,7 @@ var tests = []*components.IntegrationTest{
cherry_pick.CherryPickConflicts,
custom_commands.FormPrompts,
stash.Rename,
+ file.DirWithUntrackedFile,
}
func GetTests() []*components.IntegrationTest {
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/COMMIT_EDITMSG
new file mode 100644
index 000000000..5ec586d22
--- /dev/null
+++ b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/COMMIT_EDITMSG
@@ -0,0 +1 @@
+first commit
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/FETCH_HEAD
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/HEAD b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/HEAD
new file mode 100644
index 000000000..cb089cd89
--- /dev/null
+++ b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/master
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/config b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/config
new file mode 100644
index 000000000..8a748ce32
--- /dev/null
+++ b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/config
@@ -0,0 +1,12 @@
+[core]
+ repositoryformatversion = 0
+ filemode = true
+ bare = false
+ logallrefupdates = true
+ ignorecase = true
+ precomposeunicode = true
+[user]
+ email = CI@example.com
+ name = CI
+[commit]
+ gpgSign = false
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/description b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/description
new file mode 100644
index 000000000..498b267a8
--- /dev/null
+++ b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/description
@@ -0,0 +1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/index b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/index
new file mode 100644
index 0000000000000000000000000000000000000000..486f8bab9e2e329dca9349f939a0fd2479a4510e
GIT binary patch
literal 165
zcmZ?q402{*U|<4b#^l^3rxfl#_lMDp3=FJnpGw>q7#f!VrN08zhyXEzq=1HKnyvDW
z?NRQ}7f7bwxiihJhk+v{vq(QJGbfdSAtcDv6{yUV!BD}FYi07z$Xb4X?wM2F_2T}U
zDQz@cvK6QlC}+UczO;d-iGQ|Q{U_%(?sJ>GS=N^=GR 1668129994 +1100 commit (initial): first commit
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/logs/refs/heads/master
new file mode 100644
index 000000000..5a93ac9cc
--- /dev/null
+++ b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/logs/refs/heads/master
@@ -0,0 +1 @@
+0000000000000000000000000000000000000000 763788c33660f53eecaecce8dae27c34e647ac57 CI 1668129994 +1100 commit (initial): first commit
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/19/102815663d23f8b75a47e7a01965dcdc96468c b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/19/102815663d23f8b75a47e7a01965dcdc96468c
new file mode 100644
index 0000000000000000000000000000000000000000..280a426b7656bd61cdd4f48a43f8088ea18291b6
GIT binary patch
literal 18
Zcmbd;@;K>oCKtt=3He
z2@l#uAaV4WiKn|Qq1epK6ecGmrTFMvMjuniWYSw7t;4*)WnOObNp*k9X>Iii7~>h;
bC<7c3tu=#=iOQe4DO-Oj{3`PW+ubgI%49d`
literal 0
HcmV?d00001
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/87/a5800c820f9b267ff243860bceb24b04af76a2 b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/87/a5800c820f9b267ff243860bceb24b04af76a2
new file mode 100644
index 0000000000000000000000000000000000000000..115dcca4644a2968b0626173be1b391ff6e94da9
GIT binary patch
literal 49
zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWsnrm5KXgH{;@sE{rLjP)H`>kx%B`5
H>1++gxn&gE
literal 0
HcmV?d00001
diff --git a/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/a9/63b9597d0f4f0b9995472e5eff3622b136a4b5 b/test/integration_new/file/dir_with_untracked_file/expected/repo/.git_keep/objects/a9/63b9597d0f4f0b9995472e5eff3622b136a4b5
new file mode 100644
index 0000000000000000000000000000000000000000..ba6b1afcde1396992dcafef1d18d328bec541c01
GIT binary patch
literal 45
zcmV+|0Mh?>0V^p=O;s>9U@$QN0)>>!B8K**4LnW!v(@T9Ik$12+vLr%zHAWy
Date: Sat, 12 Nov 2022 10:18:02 +1100
Subject: [PATCH 6/9] fix broken CI (see
https://vielmetti.typepad.com/logbook/2022/10/git-security-fixes-lead-to-fatal-transport-file-not-allowed-error-in-ci-systems-cve-2022-39253.html)
try this
WIP
---
.github/workflows/ci.yml | 3 ++-
pkg/integration/components/runner.go | 1 +
test/integration/submoduleAdd/setup.sh | 5 +++++
test/integration/submoduleEnter/setup.sh | 2 +-
test/integration/submoduleRemove/setup.sh | 2 +-
test/integration/submoduleReset/setup.sh | 2 +-
6 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a781b290f..d09b8a53a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -73,8 +73,9 @@ jobs:
restore-keys: |
${{runner.os}}-go-
- name: Test code
+ # for file.allow thing see https://vielmetti.typepad.com/logbook/2022/10/git-security-fixes-lead-to-fatal-transport-file-not-allowed-error-in-ci-systems-cve-2022-39253.html
run: |
- PARALLEL_TOTAL=${{ matrix.parallelism }} PARALLEL_INDEX=${{ matrix.index }} go test pkg/integration/deprecated/*.go
+ git config --global protocol.file.allow always && PARALLEL_TOTAL=${{ matrix.parallelism }} PARALLEL_INDEX=${{ matrix.index }} go test pkg/integration/deprecated/*.go
integration-tests:
runs-on: ubuntu-latest
name: "Integration Tests"
diff --git a/pkg/integration/components/runner.go b/pkg/integration/components/runner.go
index d25f3795c..11b34db11 100644
--- a/pkg/integration/components/runner.go
+++ b/pkg/integration/components/runner.go
@@ -144,6 +144,7 @@ func createFixture(test *IntegrationTest, paths Paths) error {
shell.RunCommand(`git config user.email "CI@example.com"`)
shell.RunCommand(`git config user.name "CI"`)
shell.RunCommand(`git config commit.gpgSign false`)
+ shell.RunCommand(`git config protocol.file.allow always`)
test.SetupRepo(shell)
diff --git a/test/integration/submoduleAdd/setup.sh b/test/integration/submoduleAdd/setup.sh
index 47c92bd27..35a139f79 100644
--- a/test/integration/submoduleAdd/setup.sh
+++ b/test/integration/submoduleAdd/setup.sh
@@ -11,6 +11,11 @@ git init
git config user.email "CI@example.com"
git config user.name "CI"
+# see https://vielmetti.typepad.com/logbook/2022/10/git-security-fixes-lead-to-fatal-transport-file-not-allowed-error-in-ci-systems-cve-2022-39253.html
+# NOTE: I don't think this actually works if it's only applied to the repo.
+# On CI we set the global setting, but given it's a security concern I don't want
+# people to do that for their locals.
+git config protocol.file.allow always
echo test1 > myfile1
git add .
diff --git a/test/integration/submoduleEnter/setup.sh b/test/integration/submoduleEnter/setup.sh
index 307593a71..a38c6045b 100644
--- a/test/integration/submoduleEnter/setup.sh
+++ b/test/integration/submoduleEnter/setup.sh
@@ -26,5 +26,5 @@ cd ..
git clone --bare ./repo other_repo
cd repo
-git submodule add ../other_repo
+git -c protocol.file.allow=always submodule add ../other_repo
git commit -am "add submodule"
diff --git a/test/integration/submoduleRemove/setup.sh b/test/integration/submoduleRemove/setup.sh
index 2525abf31..cd5b3ce64 100644
--- a/test/integration/submoduleRemove/setup.sh
+++ b/test/integration/submoduleRemove/setup.sh
@@ -23,5 +23,5 @@ cd ..
git clone --bare ./repo other_repo
cd repo
-git submodule add ../other_repo
+git -c protocol.file.allow=always submodule add ../other_repo
git commit -am "add submodule"
diff --git a/test/integration/submoduleReset/setup.sh b/test/integration/submoduleReset/setup.sh
index 2525abf31..cd5b3ce64 100644
--- a/test/integration/submoduleReset/setup.sh
+++ b/test/integration/submoduleReset/setup.sh
@@ -23,5 +23,5 @@ cd ..
git clone --bare ./repo other_repo
cd repo
-git submodule add ../other_repo
+git -c protocol.file.allow=always submodule add ../other_repo
git commit -am "add submodule"
From 34404162e6e80ca6bc2b417b99433cd8f49dbf51 Mon Sep 17 00:00:00 2001
From: README-bot
Date: Fri, 11 Nov 2022 23:58:16 +0000
Subject: [PATCH 7/9] Updated README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index dba27162e..a9fbba53d 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi
-























































+























































## Elevator Pitch
From 1ac3ae1ad1b904a02e12d49adec0197e6067006e Mon Sep 17 00:00:00 2001
From: Jesse Duffield
Date: Fri, 11 Nov 2022 08:08:53 +1100
Subject: [PATCH 8/9] use better colour defaults
---
docs/Config.md | 18 ------------------
pkg/config/user_config.go | 4 +---
pkg/gui/style/basic_styles.go | 1 +
pkg/theme/theme.go | 15 ++-------------
4 files changed, 4 insertions(+), 34 deletions(-)
diff --git a/docs/Config.md b/docs/Config.md
index 82e36ec5b..aa5ceaaf9 100644
--- a/docs/Config.md
+++ b/docs/Config.md
@@ -29,7 +29,6 @@ gui:
language: 'auto' # one of 'auto' | 'en' | 'zh' | 'pl' | 'nl' | 'ja' | 'ko'
timeFormat: '02 Jan 06 15:04 MST' # https://pkg.go.dev/time#Time.Format
theme:
- lightTheme: false # For terminals with a light background
activeBorderColor:
- green
- bold
@@ -344,23 +343,6 @@ The available attributes are:
- reverse # useful for high-contrast
- underline
-## Light terminal theme
-
-If you have issues with a light terminal theme where you can't read / see the text add these settings
-
-```yaml
-gui:
- theme:
- lightTheme: true
- activeBorderColor:
- - black
- - bold
- inactiveBorderColor:
- - black
- selectedLineBgColor:
- - default
-```
-
## Highlighting the selected line
If you don't like the default behaviour of highlighting the selected line with a blue background, you can use the `selectedLineBgColor` and `selectedRangeBgColor` keys to customise the behaviour. If you just want to embolden the selected line (this was the original default), you can do the following:
diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go
index a90b100d5..c31c74fe0 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -55,7 +55,6 @@ type GuiConfig struct {
}
type ThemeConfig struct {
- LightTheme bool `yaml:"lightTheme"`
ActiveBorderColor []string `yaml:"activeBorderColor"`
InactiveBorderColor []string `yaml:"inactiveBorderColor"`
OptionsTextColor []string `yaml:"optionsTextColor"`
@@ -358,9 +357,8 @@ func GetDefaultConfig() *UserConfig {
Language: "auto",
TimeFormat: time.RFC822,
Theme: ThemeConfig{
- LightTheme: false,
ActiveBorderColor: []string{"green", "bold"},
- InactiveBorderColor: []string{"white"},
+ InactiveBorderColor: []string{"default"},
OptionsTextColor: []string{"blue"},
SelectedLineBgColor: []string{"blue"},
SelectedRangeBgColor: []string{"blue"},
diff --git a/pkg/gui/style/basic_styles.go b/pkg/gui/style/basic_styles.go
index 99db37e20..e37e90001 100644
--- a/pkg/gui/style/basic_styles.go
+++ b/pkg/gui/style/basic_styles.go
@@ -27,6 +27,7 @@ var (
BgBlue = FromBasicBg(color.BgBlue)
BgMagenta = FromBasicBg(color.BgMagenta)
BgCyan = FromBasicBg(color.BgCyan)
+ BgDefault = FromBasicBg(color.BgDefault)
// will not print any colour escape codes, including the reset escape code
Nothing = New()
diff --git a/pkg/theme/theme.go b/pkg/theme/theme.go
index 39347702a..0970e08b7 100644
--- a/pkg/theme/theme.go
+++ b/pkg/theme/theme.go
@@ -24,9 +24,6 @@ var (
// DefaultTextColor is the default text color
DefaultTextColor = style.FgWhite
- // DefaultHiTextColor is the default highlighted text color
- DefaultHiTextColor = style.FgLightWhite
-
// SelectedLineBgColor is the background color for the selected line
SelectedLineBgColor = style.New()
@@ -61,14 +58,6 @@ func UpdateTheme(themeConfig config.ThemeConfig) {
OptionsColor = GetGocuiStyle(themeConfig.OptionsTextColor)
OptionsFgColor = GetTextStyle(themeConfig.OptionsTextColor, false)
- isLightTheme := themeConfig.LightTheme
- if isLightTheme {
- DefaultTextColor = style.FgBlack
- DefaultHiTextColor = style.FgBlackLighter
- GocuiDefaultTextColor = gocui.ColorBlack
- } else {
- DefaultTextColor = style.FgWhite
- DefaultHiTextColor = style.FgLightWhite
- GocuiDefaultTextColor = gocui.ColorWhite
- }
+ DefaultTextColor = style.FgDefault
+ GocuiDefaultTextColor = gocui.ColorDefault
}
From 4fa858619149f14a71cbe9e76f30de84e7a3042a Mon Sep 17 00:00:00 2001
From: Lukasz Piatkowski
Date: Thu, 20 Oct 2022 10:33:47 +0200
Subject: [PATCH 9/9] Update go-git to handle negative refspecs
---
go.mod | 2 +-
go.sum | 4 +--
.../jesseduffield/go-git/v5/config/refspec.go | 27 ++++++++++++++++++-
vendor/modules.txt | 2 +-
4 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/go.mod b/go.mod
index c485f8d1a..b05241506 100644
--- a/go.mod
+++ b/go.mod
@@ -17,7 +17,7 @@ require (
github.com/imdario/mergo v0.3.11
github.com/integrii/flaggy v1.4.0
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68
- github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4
+ github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d
github.com/jesseduffield/gocui v0.3.1-0.20221016041636-16c24668f71c
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10
github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5
diff --git a/go.sum b/go.sum
index 834defa9f..b55ed4aa6 100644
--- a/go.sum
+++ b/go.sum
@@ -70,8 +70,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8TIcC6Y4RI+1ZbJDOHfGJ570tPeYVCqo7/tws=
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk=
-github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 h1:GOQrmaE8i+KEdB8NzAegKYd4tPn/inM0I1uo0NXFerg=
-github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o=
+github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d h1:bO+OmbreIv91rCe8NmscRwhFSqkDJtzWCPV4Y+SQuXE=
+github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o=
github.com/jesseduffield/gocui v0.3.1-0.20221016041636-16c24668f71c h1:ttqCvM86hyp4V3DtRPxLo9imD1s+n6ry/zshPx0tt98=
github.com/jesseduffield/gocui v0.3.1-0.20221016041636-16c24668f71c/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU=
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0=
diff --git a/vendor/github.com/jesseduffield/go-git/v5/config/refspec.go b/vendor/github.com/jesseduffield/go-git/v5/config/refspec.go
index 3b0cb77e6..9af7abde5 100644
--- a/vendor/github.com/jesseduffield/go-git/v5/config/refspec.go
+++ b/vendor/github.com/jesseduffield/go-git/v5/config/refspec.go
@@ -11,11 +11,13 @@ const (
refSpecWildcard = "*"
refSpecForce = "+"
refSpecSeparator = ":"
+ refSpecNegative = "^"
)
var (
ErrRefSpecMalformedSeparator = errors.New("malformed refspec, separators are wrong")
ErrRefSpecMalformedWildcard = errors.New("malformed refspec, mismatched number of wildcards")
+ ErrRefSpecMalformedNegative = errors.New("malformed negative refspec, one ^ and no separators allowed")
)
// RefSpec is a mapping from local branches to remote references.
@@ -31,6 +33,24 @@ type RefSpec string
// Validate validates the RefSpec
func (s RefSpec) Validate() error {
spec := string(s)
+
+ if strings.Index(spec, refSpecNegative) == 0 {
+ // This is a negative refspec
+ if strings.Count(spec, refSpecNegative) != 1 {
+ return ErrRefSpecMalformedNegative
+ }
+
+ if strings.Count(spec, refSpecSeparator) != 0 {
+ return ErrRefSpecMalformedNegative
+ }
+
+ if strings.Count(spec, refSpecWildcard) > 1 {
+ return ErrRefSpecMalformedWildcard
+ }
+
+ return nil
+ }
+
if strings.Count(spec, refSpecSeparator) != 1 {
return ErrRefSpecMalformedSeparator
}
@@ -64,12 +84,17 @@ func (s RefSpec) IsExactSHA1() bool {
return plumbing.IsHash(s.Src())
}
+// IsNegative returns if the refspec is a negative one
+func (s RefSpec) IsNegative() bool {
+ return s[0] == refSpecNegative[0]
+}
+
// Src return the src side.
func (s RefSpec) Src() string {
spec := string(s)
var start int
- if s.IsForceUpdate() {
+ if s.IsForceUpdate() || s.IsNegative() {
start = 1
} else {
start = 0
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 1aa9becc1..94ee1ccc4 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -128,7 +128,7 @@ github.com/jbenet/go-context/io
github.com/jesseduffield/generics/maps
github.com/jesseduffield/generics/set
github.com/jesseduffield/generics/slices
-# github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4
+# github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d
## explicit; go 1.13
github.com/jesseduffield/go-git/v5
github.com/jesseduffield/go-git/v5/config