MCPcopy Create free account
hub / github.com/go-git/go-git / encodeEntry

Method encodeEntry

plumbing/format/index/encoder.go:93–154  ·  view source on GitHub ↗
(idx *Index, entry *Entry)

Source from the content-addressed store, hash-verified

91}
92
93func (e *Encoder) encodeEntry(idx *Index, entry *Entry) error {
94 sec, nsec, err := e.timeToUint32(&entry.CreatedAt)
95 if err != nil {
96 return err
97 }
98
99 msec, mnsec, err := e.timeToUint32(&entry.ModifiedAt)
100 if err != nil {
101 return err
102 }
103
104 flags := uint16(entry.Stage&0x3) << 12
105 if l := len(entry.Name); l < nameMask {
106 flags |= uint16(l)
107 } else {
108 flags |= nameMask
109 }
110
111 flow := []interface{}{
112 sec, nsec,
113 msec, mnsec,
114 entry.Dev,
115 entry.Inode,
116 entry.Mode,
117 entry.UID,
118 entry.GID,
119 entry.Size,
120 entry.Hash[:],
121 }
122
123 flagsFlow := []interface{}{flags}
124
125 if entry.IntentToAdd || entry.SkipWorktree {
126 var extendedFlags uint16
127
128 if entry.IntentToAdd {
129 extendedFlags |= intentToAddMask
130 }
131 if entry.SkipWorktree {
132 extendedFlags |= skipWorkTreeMask
133 }
134
135 flagsFlow = []interface{}{flags | entryExtended, extendedFlags}
136 }
137
138 flow = append(flow, flagsFlow...)
139
140 if err := binary.Write(e.w, flow...); err != nil {
141 return err
142 }
143
144 switch idx.Version {
145 case 2, 3:
146 err = e.encodeEntryName(entry)
147 case 4:
148 err = e.encodeEntryNameV4(entry)
149 default:
150 err = ErrUnsupportedVersion

Callers 1

encodeEntriesMethod · 0.95

Calls 4

timeToUint32Method · 0.95
encodeEntryNameMethod · 0.95
encodeEntryNameV4Method · 0.95
WriteFunction · 0.92

Tested by

no test coverage detected