MCPcopy Index your code
hub / github.com/go-git/go-git / encodeCommitData

Method encodeCommitData

plumbing/format/commitgraph/v2/encoder.go:160–207  ·  view source on GitHub ↗
(hashes []plumbing.Hash, hashToIndex map[plumbing.Hash]uint32, idx Index)

Source from the content-addressed store, hash-verified

158}
159
160func (e *Encoder) encodeCommitData(hashes []plumbing.Hash, hashToIndex map[plumbing.Hash]uint32, idx Index) (extraEdges []uint32, generationV2Data []uint64, err error) {
161 if idx.HasGenerationV2() {
162 generationV2Data = make([]uint64, 0, len(hashes))
163 }
164 for _, hash := range hashes {
165 origIndex, _ := idx.GetIndexByHash(hash)
166 commitData, _ := idx.GetCommitDataByIndex(origIndex)
167 if _, err = e.Write(commitData.TreeHash[:]); err != nil {
168 return
169 }
170
171 var parent1, parent2 uint32
172 if len(commitData.ParentHashes) == 0 {
173 parent1 = parentNone
174 parent2 = parentNone
175 } else if len(commitData.ParentHashes) == 1 {
176 parent1 = hashToIndex[commitData.ParentHashes[0]]
177 parent2 = parentNone
178 } else if len(commitData.ParentHashes) == 2 {
179 parent1 = hashToIndex[commitData.ParentHashes[0]]
180 parent2 = hashToIndex[commitData.ParentHashes[1]]
181 } else if len(commitData.ParentHashes) > 2 {
182 parent1 = hashToIndex[commitData.ParentHashes[0]]
183 parent2 = uint32(len(extraEdges)) | parentOctopusUsed
184 for _, parentHash := range commitData.ParentHashes[1:] {
185 extraEdges = append(extraEdges, hashToIndex[parentHash])
186 }
187 extraEdges[len(extraEdges)-1] |= parentLast
188 }
189
190 if err = binary.WriteUint32(e, parent1); err == nil {
191 err = binary.WriteUint32(e, parent2)
192 }
193 if err != nil {
194 return
195 }
196
197 unixTime := uint64(commitData.When.Unix())
198 unixTime |= uint64(commitData.Generation) << 34
199 if err = binary.WriteUint64(e, unixTime); err != nil {
200 return
201 }
202 if generationV2Data != nil {
203 generationV2Data = append(generationV2Data, commitData.GenerationV2Data())
204 }
205 }
206 return
207}
208
209func (e *Encoder) encodeExtraEdges(extraEdges []uint32) (err error) {
210 for _, parent := range extraEdges {

Callers 1

EncodeMethod · 0.95

Calls 7

WriteUint32Function · 0.92
WriteUint64Function · 0.92
GenerationV2DataMethod · 0.80
HasGenerationV2Method · 0.65
GetIndexByHashMethod · 0.65
GetCommitDataByIndexMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected