package commitgraph import ( "time" "gopkg.in/src-d/go-git.v4/plumbing" ) // CommitData is a reduced representation of Commit as presented in the commit graph // file. It is merely useful as an optimization for walking the commit graphs. type CommitData struct { // TreeHash is the hash of the root tree of the commit. TreeHash plumbing.Hash // ParentIndexes are the indexes of the parent commits of the commit. ParentIndexes []int // ParentHashes are the hashes of the parent commits of the commit. ParentHashes []plumbing.Hash // Generation number is the pre-computed generation in the commit graph // or zero if not available Generation int // When is the timestamp of the commit. When time.Time } // Index represents a representation of commit graph that allows indexed // access to the nodes using commit object hash type Index interface { // GetIndexByHash gets the index in the commit graph from commit hash, if available GetIndexByHash(h plumbing.Hash) (int, error) // GetNodeByIndex gets the commit node from the commit graph using index // obtained from child node, if available GetCommitDataByIndex(i int) (*CommitData, error) // Hashes returns all the hashes that are available in the index Hashes() []plumbing.Hash }