optimise file existence check
1 file changed, 19 insertions(+), 0 deletions(-)
changed files
M git/git.go → git/git.go
@@ -194,6 +194,25 @@ return commitRef, nil } +func (g *Repo) HasFile(path string) (bool, error) { + c, err := g.r.CommitObject(g.h) + if err != nil { + return false, fmt.Errorf("commit object: %w", err) + } + + tree, err := c.Tree() + if err != nil { + return false, fmt.Errorf("file tree: %w", err) + } + + file, err := tree.File(path) + if err != nil && err != object.ErrFileNotFound { + return false, err + } + + return file != nil, nil +} + func (g *Repo) FileContent(path string) (string, error) { c, err := g.r.CommitObject(g.h) if err != nil {