MCPcopy
hub / github.com/go-git/go-git / entry

Method entry

plumbing/format/packfile/encoder.go:84–135  ·  view source on GitHub ↗
(o *ObjectToPack)

Source from the content-addressed store, hash-verified

82}
83
84func (e *Encoder) entry(o *ObjectToPack) (err error) {
85 if o.WantWrite() {
86 // A cycle exists in this delta chain. This should only occur if a
87 // selected object representation disappeared during writing
88 // (for example due to a concurrent repack) and a different base
89 // was chosen, forcing a cycle. Select something other than a
90 // delta, and write this object.
91 e.selector.restoreOriginal(o)
92 o.BackToOriginal()
93 }
94
95 if o.IsWritten() {
96 return nil
97 }
98
99 o.MarkWantWrite()
100
101 if err := e.writeBaseIfDelta(o); err != nil {
102 return err
103 }
104
105 // We need to check if we already write that object due a cyclic delta chain
106 if o.IsWritten() {
107 return nil
108 }
109
110 o.Offset = e.w.Offset()
111
112 if o.IsDelta() {
113 if err := e.writeDeltaHeader(o); err != nil {
114 return err
115 }
116 } else {
117 if err := e.entryHead(o.Type(), o.Size()); err != nil {
118 return err
119 }
120 }
121
122 e.zw.Reset(e.w)
123
124 defer ioutil.CheckClose(e.zw, &err)
125
126 or, err := o.Object.Reader()
127 if err != nil {
128 return err
129 }
130
131 defer ioutil.CheckClose(or, &err)
132
133 _, err = io.Copy(e.zw, or)
134 return err
135}
136
137func (e *Encoder) writeBaseIfDelta(o *ObjectToPack) error {
138 if o.IsDelta() && !o.Base.IsWritten() {

Callers 2

encodeMethod · 0.95
writeBaseIfDeltaMethod · 0.95

Calls 15

writeBaseIfDeltaMethod · 0.95
writeDeltaHeaderMethod · 0.95
entryHeadMethod · 0.95
CheckCloseFunction · 0.92
WantWriteMethod · 0.80
restoreOriginalMethod · 0.80
BackToOriginalMethod · 0.80
IsWrittenMethod · 0.80
MarkWantWriteMethod · 0.80
OffsetMethod · 0.80
TypeMethod · 0.65
SizeMethod · 0.65

Tested by

no test coverage detected