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

Method copyFileToStorage

worktree_status.go:480–508  ·  view source on GitHub ↗
(path string)

Source from the content-addressed store, hash-verified

478}
479
480func (w *Worktree) copyFileToStorage(path string) (hash plumbing.Hash, err error) {
481 fi, err := w.Filesystem.Lstat(path)
482 if err != nil {
483 return plumbing.ZeroHash, err
484 }
485
486 obj := w.r.Storer.NewEncodedObject()
487 obj.SetType(plumbing.BlobObject)
488 obj.SetSize(fi.Size())
489
490 writer, err := obj.Writer()
491 if err != nil {
492 return plumbing.ZeroHash, err
493 }
494
495 defer ioutil.CheckClose(writer, &err)
496
497 if fi.Mode()&os.ModeSymlink != 0 {
498 err = w.fillEncodedObjectFromSymlink(writer, path, fi)
499 } else {
500 err = w.fillEncodedObjectFromFile(writer, path, fi)
501 }
502
503 if err != nil {
504 return plumbing.ZeroHash, err
505 }
506
507 return w.r.Storer.SetEncodedObject(obj)
508}
509
510func (w *Worktree) fillEncodedObjectFromFile(dst io.Writer, path string, _ os.FileInfo) (err error) {
511 src, err := w.Filesystem.Open(path)

Callers 1

doAddFileMethod · 0.95

Calls 11

SetTypeMethod · 0.95
SetSizeMethod · 0.95
WriterMethod · 0.95
CheckCloseFunction · 0.92
NewEncodedObjectMethod · 0.65
SizeMethod · 0.65
ModeMethod · 0.65
SetEncodedObjectMethod · 0.65
LstatMethod · 0.45

Tested by

no test coverage detected