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 -[![Slack](../assets/slack_rgb.png)](https://join.slack.com/t/lazygit/shared_invite/zt-5bo2clzo-hB8ZTVN5dWUCqj5QFiQVLA) +[![Discord](../assets/discord.png)](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 -[![Discord](../assets/discord.png)](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