Fast implementation of Git in pure Go codeberg.org/lindenii/furgit
git go
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 64 lines 1.5 kB view raw
1package commitquery 2 3import commitgraphread "codeberg.org/lindenii/furgit/format/commitgraph/read" 4 5// loadCommitAtGraphPos populates one node from one commit-graph record. 6func (query *query) loadCommitAtGraphPos(idx nodeIndex, pos commitgraphread.Position) error { 7 commit, err := query.graph.CommitAt(pos) 8 if err != nil { 9 return err 10 } 11 12 parents := make([]parentRef, 0, 2+len(commit.ExtraParents)) 13 14 if commit.Parent1.Valid { 15 parentOID, err := query.graph.OIDAt(commit.Parent1.Pos) 16 if err != nil { 17 return err 18 } 19 20 parents = append(parents, parentRef{ 21 ID: parentOID, 22 GraphPos: commit.Parent1.Pos, 23 HasGraphPos: true, 24 }) 25 } 26 27 if commit.Parent2.Valid { 28 parentOID, err := query.graph.OIDAt(commit.Parent2.Pos) 29 if err != nil { 30 return err 31 } 32 33 parents = append(parents, parentRef{ 34 ID: parentOID, 35 GraphPos: commit.Parent2.Pos, 36 HasGraphPos: true, 37 }) 38 } 39 40 for _, parentPos := range commit.ExtraParents { 41 parentOID, err := query.graph.OIDAt(parentPos) 42 if err != nil { 43 return err 44 } 45 46 parents = append(parents, parentRef{ 47 ID: parentOID, 48 GraphPos: parentPos, 49 HasGraphPos: true, 50 }) 51 } 52 53 data := commitData{ 54 ID: commit.OID, 55 Parents: parents, 56 CommitTime: commit.CommitTimeUnix, 57 Generation: commit.GenerationV2, 58 HasGeneration: commit.GenerationV2 != 0, 59 GraphPos: pos, 60 HasGraphPos: true, 61 } 62 63 return query.populateNode(idx, data) 64}