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

Method encodeCommitData

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

Source from the content-addressed store, hash-verified

144}
145
146func (e *Encoder) encodeCommitData(hashes []plumbing.Hash, hashToIndex map[plumbing.Hash]uint32, idx Index) (extraEdges []uint32, err error) {
147 for _, hash := range hashes {
148 origIndex, _ := idx.GetIndexByHash(hash)
149 commitData, _ := idx.GetCommitDataByIndex(origIndex)
150 if _, err = e.Write(commitData.TreeHash[:]); err != nil {
151 return
152 }
153
154 var parent1, parent2 uint32
155 if len(commitData.ParentHashes) == 0 {
156 parent1 = parentNone
157 parent2 = parentNone
158 } else if len(commitData.ParentHashes) == 1 {
159 parent1 = hashToIndex[commitData.ParentHashes[0]]
160 parent2 = parentNone
161 } else if len(commitData.ParentHashes) == 2 {
162 parent1 = hashToIndex[commitData.ParentHashes[0]]
163 parent2 = hashToIndex[commitData.ParentHashes[1]]
164 } else if len(commitData.ParentHashes) > 2 {
165 parent1 = hashToIndex[commitData.ParentHashes[0]]
166 parent2 = uint32(len(extraEdges)) | parentOctopusUsed
167 for _, parentHash := range commitData.ParentHashes[1:] {
168 extraEdges = append(extraEdges, hashToIndex[parentHash])
169 }
170 extraEdges[len(extraEdges)-1] |= parentLast
171 }
172
173 if err = binary.WriteUint32(e, parent1); err == nil {
174 err = binary.WriteUint32(e, parent2)
175 }
176 if err != nil {
177 return
178 }
179
180 unixTime := uint64(commitData.When.Unix())
181 unixTime |= uint64(commitData.Generation) << 34
182 if err = binary.WriteUint64(e, unixTime); err != nil {
183 return
184 }
185 }
186 return
187}
188
189func (e *Encoder) encodeExtraEdges(extraEdges []uint32) (err error) {
190 for _, parent := range extraEdges {

Callers 1

EncodeMethod · 0.95

Calls 5

WriteUint32Function · 0.92
WriteUint64Function · 0.92
GetIndexByHashMethod · 0.65
GetCommitDataByIndexMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected