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 36 lines 870 B view raw
1package commitquery 2 3// beginMarkPhase starts one tracked mark-mutation phase. 4func (query *query) beginMarkPhase() { 5 for _, idx := range query.touched { 6 query.nodes[idx].marks = 0 7 } 8 9 query.markPhase++ 10 if query.markPhase == 0 { 11 query.markPhase++ 12 for i := range query.nodes { 13 query.nodes[i].touchedPhase = 0 14 } 15 } 16 17 query.touched = query.touched[:0] 18} 19 20// clearTouchedMarks clears the provided bits from all nodes touched in the 21// current mark phase. 22func (query *query) clearTouchedMarks(bits markBits) { 23 for _, idx := range query.touched { 24 query.nodes[idx].marks &^= bits 25 } 26} 27 28// trackTouched records one node in the current mark phase. 29func (query *query) trackTouched(idx nodeIndex) { 30 if query.nodes[idx].touchedPhase == query.markPhase { 31 return 32 } 33 34 query.nodes[idx].touchedPhase = query.markPhase 35 query.touched = append(query.touched, idx) 36}