|
- // Copyright 2019 The Gitea Authors.
- // All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
-
- package git
-
- import (
- "os"
- "path"
-
- gitealog "code.gitea.io/gitea/modules/log"
-
- "gopkg.in/src-d/go-git.v4/plumbing/format/commitgraph"
- cgobject "gopkg.in/src-d/go-git.v4/plumbing/object/commitgraph"
- )
-
- // CommitNodeIndex returns the index for walking commit graph
- func (r *Repository) CommitNodeIndex() (cgobject.CommitNodeIndex, *os.File) {
- indexPath := path.Join(r.Path, "objects", "info", "commit-graph")
-
- file, err := os.Open(indexPath)
- if err == nil {
- var index commitgraph.Index
- index, err = commitgraph.OpenFileIndex(file)
- if err == nil {
- return cgobject.NewGraphCommitNodeIndex(index, r.gogitRepo.Storer), file
- }
- }
-
- if !os.IsNotExist(err) {
- gitealog.Warn("Unable to read commit-graph for %s: %v", r.Path, err)
- }
-
- return cgobject.NewObjectCommitNodeIndex(r.gogitRepo.Storer), nil
- }
|