all repos — elgit @ 3bb944b8b1e79781346e71fe25e79bbc949b050a

fork of legit: web frontend for git, written in go

optimise file existence check

Alan Pearce
commit

3bb944b8b1e79781346e71fe25e79bbc949b050a

parent

4b0c8a2ccf003a957e37506bdee5ad6829feb06c

2 files changed, 21 insertions(+), 2 deletions(-)

changed files
M git/git.gogit/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 {
M routes/util.goroutes/util.go
@@ -16,9 +16,9 @@ "github.com/savsgio/atreugo/v11"
) func isGoModule(gr *git.Repo) bool { - _, err := gr.FileContent("go.mod") + has, _ := gr.HasFile("go.mod") - return err == nil + return has } func getDisplayName(name string) string {