code.gitea.io/gitea@v1.19.3/modules/git/repo_commitgraph_gogit.go (about) 1 // Copyright 2019 The Gitea Authors. 2 // All rights reserved. 3 // SPDX-License-Identifier: MIT 4 5 //go:build gogit 6 7 package git 8 9 import ( 10 "os" 11 "path" 12 13 gitealog "code.gitea.io/gitea/modules/log" 14 15 "github.com/go-git/go-git/v5/plumbing/format/commitgraph" 16 cgobject "github.com/go-git/go-git/v5/plumbing/object/commitgraph" 17 ) 18 19 // CommitNodeIndex returns the index for walking commit graph 20 func (r *Repository) CommitNodeIndex() (cgobject.CommitNodeIndex, *os.File) { 21 indexPath := path.Join(r.Path, "objects", "info", "commit-graph") 22 23 file, err := os.Open(indexPath) 24 if err == nil { 25 var index commitgraph.Index 26 index, err = commitgraph.OpenFileIndex(file) 27 if err == nil { 28 return cgobject.NewGraphCommitNodeIndex(index, r.gogitRepo.Storer), file 29 } 30 } 31 32 if !os.IsNotExist(err) { 33 gitealog.Warn("Unable to read commit-graph for %s: %v", r.Path, err) 34 } 35 36 return cgobject.NewObjectCommitNodeIndex(r.gogitRepo.Storer), nil 37 }