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

Method readEntry

plumbing/format/index/decoder.go:99–151  ·  view source on GitHub ↗
(idx *Index)

Source from the content-addressed store, hash-verified

97}
98
99func (d *Decoder) readEntry(idx *Index) (*Entry, error) {
100 e := &Entry{}
101
102 var msec, mnsec, sec, nsec uint32
103 var flags uint16
104
105 flow := []interface{}{
106 &sec, &nsec,
107 &msec, &mnsec,
108 &e.Dev,
109 &e.Inode,
110 &e.Mode,
111 &e.UID,
112 &e.GID,
113 &e.Size,
114 &e.Hash,
115 &flags,
116 }
117
118 if err := binary.Read(d.r, flow...); err != nil {
119 return nil, err
120 }
121
122 read := entryHeaderLength
123
124 if sec != 0 || nsec != 0 {
125 e.CreatedAt = time.Unix(int64(sec), int64(nsec))
126 }
127
128 if msec != 0 || mnsec != 0 {
129 e.ModifiedAt = time.Unix(int64(msec), int64(mnsec))
130 }
131
132 e.Stage = Stage(flags>>12) & 0x3
133
134 if flags&entryExtended != 0 {
135 extended, err := binary.ReadUint16(d.r)
136 if err != nil {
137 return nil, err
138 }
139
140 read += 2
141 e.IntentToAdd = extended&intentToAddMask != 0
142 e.SkipWorktree = extended&skipWorkTreeMask != 0
143 }
144
145 nameConsumed, err := d.readEntryName(idx, e, flags)
146 if err != nil {
147 return nil, err
148 }
149
150 return e, d.padEntry(idx, e, read, nameConsumed)
151}
152
153// readEntryName reads the entry path and sets e.Name. It returns the
154// number of bytes consumed from the stream for the name portion.

Callers 1

readEntriesMethod · 0.95

Calls 5

readEntryNameMethod · 0.95
padEntryMethod · 0.95
ReadFunction · 0.92
ReadUint16Function · 0.92
StageTypeAlias · 0.85

Tested by

no test coverage detected