MCPcopy Index your code
hub / github.com/AlistGo/alist / copyWithoutRenewTree

Method copyWithoutRenewTree

drivers/github/driver.go:885–928  ·  view source on GitHub ↗
(srcObj, dstDir model.Obj)

Source from the content-addressed store, hash-verified

883}
884
885func (d *Github) copyWithoutRenewTree(srcObj, dstDir model.Obj) (dstSha, newSha, srcParentSha string, srcParentTree *TreeResp, err error) {
886 dst, err := d.get(dstDir.GetPath())
887 if err != nil {
888 return "", "", "", nil, err
889 }
890 if dst.Entries == nil {
891 return "", "", "", nil, errs.NotFolder
892 }
893 dstSha = dst.Sha
894 srcParentPath := stdpath.Dir(srcObj.GetPath())
895 srcParentTree, srcParentSha, err = d.getTreeDirectly(srcParentPath)
896 if err != nil {
897 return "", "", "", nil, err
898 }
899 var src *TreeObjReq = nil
900 for _, t := range srcParentTree.Trees {
901 if t.Path == srcObj.GetName() {
902 if t.Type == "commit" {
903 return "", "", "", nil, errors.New("cannot copy a submodule")
904 }
905 src = &t.TreeObjReq
906 break
907 }
908 }
909 if src == nil {
910 return "", "", "", nil, errs.ObjectNotFound
911 }
912
913 newTree := make([]interface{}, 0, 2)
914 newTree = append(newTree, *src)
915 if len(dst.Entries) == 1 && dst.Entries[0].Name == ".gitkeep" {
916 newTree = append(newTree, TreeObjReq{
917 Path: ".gitkeep",
918 Mode: "100644",
919 Type: "blob",
920 Sha: nil,
921 })
922 }
923 newSha, err = d.newTree(dstSha, newTree)
924 if err != nil {
925 return "", "", "", nil, err
926 }
927 return dstSha, newSha, srcParentSha, srcParentTree, nil
928}
929
930func (d *Github) getRepo() (*RepoResp, error) {
931 res, err := d.client.R().Get(fmt.Sprintf("https://api.github.com/repos/%s/%s", d.Owner, d.Repo))

Callers 2

MoveMethod · 0.95
CopyMethod · 0.95

Calls 5

getMethod · 0.95
getTreeDirectlyMethod · 0.95
newTreeMethod · 0.95
GetPathMethod · 0.65
GetNameMethod · 0.65

Tested by

no test coverage detected