MCPcopy Index your code
hub / github.com/OpenListTeam/OpenList / Put

Method Put

drivers/github/driver.go:613–665  ·  view source on GitHub ↗
(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress)

Source from the content-addressed store, hash-verified

611}
612
613func (d *Github) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) error {
614 if !d.isOnBranch {
615 return errors.New("cannot write to non-branch reference")
616 }
617 blob, err := d.putBlob(ctx, stream, up)
618 if err != nil {
619 return err
620 }
621 d.commitMutex.Lock()
622 defer d.commitMutex.Unlock()
623 parent, err := d.get(dstDir.GetPath())
624 if err != nil {
625 return err
626 }
627 if parent.Entries == nil {
628 return errs.NotFolder
629 }
630 newTree := make([]interface{}, 0, 2)
631 newTree = append(newTree, TreeObjReq{
632 Path: stream.GetName(),
633 Mode: "100644",
634 Type: "blob",
635 Sha: blob,
636 })
637 if len(parent.Entries) == 1 && parent.Entries[0].Name == ".gitkeep" {
638 newTree = append(newTree, TreeObjReq{
639 Path: ".gitkeep",
640 Mode: "100644",
641 Type: "blob",
642 Sha: nil,
643 })
644 }
645 newSha, err := d.newTree(parent.Sha, newTree)
646 if err != nil {
647 return err
648 }
649 rootSha, err := d.renewParentTrees(dstDir.GetPath(), parent.Sha, newSha, "/")
650 if err != nil {
651 return err
652 }
653
654 commitMessage, err := getMessage(d.putMsgTmpl, &MessageTemplateVars{
655 UserName: getUsername(ctx),
656 ObjName: stream.GetName(),
657 ObjPath: stdpath.Join(dstDir.GetPath(), stream.GetName()),
658 ParentName: dstDir.GetName(),
659 ParentPath: dstDir.GetPath(),
660 }, "upload")
661 if err != nil {
662 return err
663 }
664 return d.commit(commitMessage, rootSha)
665}
666
667var _ driver.Driver = (*Github)(nil)
668

Callers

nothing calls this directly

Calls 10

putBlobMethod · 0.95
getMethod · 0.95
newTreeMethod · 0.95
renewParentTreesMethod · 0.95
commitMethod · 0.95
getMessageFunction · 0.85
getUsernameFunction · 0.85
UnlockMethod · 0.65
GetPathMethod · 0.65
GetNameMethod · 0.65

Tested by

no test coverage detected