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

Method Encode

plumbing/object/tree.go:387–418  ·  view source on GitHub ↗

Encode transforms a Tree into a plumbing.EncodedObject. The tree entries must be sorted by name.

(o plumbing.EncodedObject)

Source from the content-addressed store, hash-verified

385// Encode transforms a Tree into a plumbing.EncodedObject.
386// The tree entries must be sorted by name.
387func (t *Tree) Encode(o plumbing.EncodedObject) (err error) {
388 o.SetType(plumbing.TreeObject)
389 w, err := o.Writer()
390 if err != nil {
391 return err
392 }
393
394 defer ioutil.CheckClose(w, &err)
395
396 if !sort.IsSorted(TreeEntrySorter(t.Entries)) {
397 return ErrEntriesNotSorted
398 }
399
400 for _, entry := range t.Entries {
401 if strings.IndexByte(entry.Name, 0) != -1 {
402 return fmt.Errorf("malformed filename %q", entry.Name)
403 }
404 if _, err = fmt.Fprintf(w, "%o %s", entry.Mode, entry.Name); err != nil {
405 return err
406 }
407
408 if _, err = w.Write([]byte{0x00}); err != nil {
409 return err
410 }
411
412 if _, err = w.Write(entry.Hash[:]); err != nil {
413 return err
414 }
415 }
416
417 return err
418}
419
420// Diff returns a list of changes between this tree and the provided one
421func (t *Tree) Diff(to *Tree) (Changes, error) {

Callers 3

writeEmptyTreeFunction · 0.95
TestTreeEntriesSortedMethod · 0.95

Calls 5

CheckCloseFunction · 0.92
TreeEntrySorterTypeAlias · 0.85
SetTypeMethod · 0.65
WriterMethod · 0.65
WriteMethod · 0.45

Tested by 3

writeEmptyTreeFunction · 0.76
TestTreeEntriesSortedMethod · 0.76