mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-12 12:55:47 +02:00
fix could-not-access error
This commit is contained in:
parent
ab03cf8bcf
commit
e8b97c9fe2
22 changed files with 80 additions and 1 deletions
|
@ -241,7 +241,7 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain
|
||||||
if cached {
|
if cached {
|
||||||
cachedArg = " --cached"
|
cachedArg = " --cached"
|
||||||
}
|
}
|
||||||
if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached {
|
if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached && node.GetIsFile() {
|
||||||
trackedArg = "--no-index -- /dev/null"
|
trackedArg = "--no-index -- /dev/null"
|
||||||
}
|
}
|
||||||
if plain {
|
if plain {
|
||||||
|
|
|
@ -29,6 +29,7 @@ type IFile interface {
|
||||||
GetIsTracked() bool
|
GetIsTracked() bool
|
||||||
GetPath() string
|
GetPath() string
|
||||||
GetPreviousPath() string
|
GetPreviousPath() string
|
||||||
|
GetIsFile() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *File) IsRename() bool {
|
func (f *File) IsRename() bool {
|
||||||
|
@ -92,6 +93,10 @@ func (f *File) GetPreviousPath() string {
|
||||||
return f.PreviousName
|
return f.PreviousName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *File) GetIsFile() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
type StatusFields struct {
|
type StatusFields struct {
|
||||||
HasStagedChanges bool
|
HasStagedChanges bool
|
||||||
HasUnstagedChanges bool
|
HasUnstagedChanges bool
|
||||||
|
|
|
@ -42,6 +42,10 @@ func (self *FileNode) GetIsTracked() bool {
|
||||||
return self.SomeFile(func(file *models.File) bool { return file.Tracked })
|
return self.SomeFile(func(file *models.File) bool { return file.Tracked })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *FileNode) GetIsFile() bool {
|
||||||
|
return self.IsFile()
|
||||||
|
}
|
||||||
|
|
||||||
func (self *FileNode) GetPreviousPath() string {
|
func (self *FileNode) GetPreviousPath() string {
|
||||||
if self.File == nil {
|
if self.File == nil {
|
||||||
return ""
|
return ""
|
||||||
|
|
|
@ -45,6 +45,15 @@ func (s *Shell) CreateFile(path string, content string) *Shell {
|
||||||
return s
|
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 {
|
func (s *Shell) UpdateFile(path string, content string) *Shell {
|
||||||
fullPath := filepath.Join(s.dir, path)
|
fullPath := filepath.Join(s.dir, path)
|
||||||
err := os.WriteFile(fullPath, []byte(content), 0o644)
|
err := os.WriteFile(fullPath, []byte(content), 0o644)
|
||||||
|
|
32
pkg/integration/tests/file/dir_with_untracked_file.go
Normal file
32
pkg/integration/tests/file/dir_with_untracked_file.go
Normal file
|
@ -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"))
|
||||||
|
},
|
||||||
|
})
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
|
"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/interactive_rebase"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/stash"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/stash"
|
||||||
)
|
)
|
||||||
|
@ -40,6 +41,7 @@ var tests = []*components.IntegrationTest{
|
||||||
cherry_pick.CherryPickConflicts,
|
cherry_pick.CherryPickConflicts,
|
||||||
custom_commands.FormPrompts,
|
custom_commands.FormPrompts,
|
||||||
stash.Rename,
|
stash.Rename,
|
||||||
|
file.DirWithUntrackedFile,
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTests() []*components.IntegrationTest {
|
func GetTests() []*components.IntegrationTest {
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
first commit
|
|
@ -0,0 +1 @@
|
||||||
|
ref: refs/heads/master
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
Unnamed repository; edit this file 'description' to name the repository.
|
Binary file not shown.
|
@ -0,0 +1,7 @@
|
||||||
|
# git ls-files --others --exclude-from=.git/info/exclude
|
||||||
|
# Lines that start with '#' are comments.
|
||||||
|
# For a project mostly in C, the following would be a good set of
|
||||||
|
# exclude patterns (uncomment them if you want to use them):
|
||||||
|
# *.[oa]
|
||||||
|
# *~
|
||||||
|
.DS_Store
|
|
@ -0,0 +1 @@
|
||||||
|
0000000000000000000000000000000000000000 763788c33660f53eecaecce8dae27c34e647ac57 CI <CI@example.com> 1668129994 +1100 commit (initial): first commit
|
|
@ -0,0 +1 @@
|
||||||
|
0000000000000000000000000000000000000000 763788c33660f53eecaecce8dae27c34e647ac57 CI <CI@example.com> 1668129994 +1100 commit (initial): first commit
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
763788c33660f53eecaecce8dae27c34e647ac57
|
|
@ -0,0 +1 @@
|
||||||
|
baz
|
|
@ -0,0 +1 @@
|
||||||
|
bar
|
Loading…
Add table
Add a link
Reference in a new issue