@@ -75,13 +75,13 @@ func (oct ObjectController) HeadObject(ctx context.Context, w *api.JiaozifsRespo
7575 }
7676
7777 objRepo := oct .Repo .ObjectRepo ()
78- treeOp := versionmgr .NewTreeOp (oct .Repo .ObjectRepo ())
79- treeNode , err := objRepo .TreeNode (ctx , commit .TreeHash )
78+ treeOp , err := versionmgr .NewWorkTree (ctx , oct .Repo .ObjectRepo (), models .NewRootTreeEntry (commit .TreeHash ))
8079 if err != nil {
8180 w .Error (err )
8281 return
8382 }
84- existNodes , missingPath , err := treeOp .MatchPath (ctx , treeNode , params .Path )
83+
84+ existNodes , missingPath , err := treeOp .MatchPath (ctx , params .Path )
8585 if err != nil {
8686 w .Error (err )
8787 return
@@ -93,19 +93,19 @@ func (oct ObjectController) HeadObject(ctx context.Context, w *api.JiaozifsRespo
9393
9494 objectWithName := existNodes [len (existNodes )- 1 ]
9595
96- blob , err := objRepo .Blob (ctx , objectWithName .Node .Hash )
96+ blob , err := objRepo .Blob (ctx , objectWithName .Node () .Hash )
9797 if err != nil {
9898 w .Error (err )
9999 return
100100 }
101101
102102 //lookup files
103- etag := httputil .ETag (objectWithName .Node .Hash .Hex ())
103+ etag := httputil .ETag (objectWithName .Node () .Hash .Hex ())
104104 w .Header ().Set ("ETag" , etag )
105- lastModified := httputil .HeaderTimestamp (objectWithName .Node .CreatedAt )
105+ lastModified := httputil .HeaderTimestamp (objectWithName .Node () .CreatedAt )
106106 w .Header ().Set ("Last-Modified" , lastModified )
107107 w .Header ().Set ("Accept-Ranges" , "bytes" )
108- w .Header ().Set ("Content-Type" , httputil .ExtensionsByType (objectWithName .Name ))
108+ w .Header ().Set ("Content-Type" , httputil .ExtensionsByType (objectWithName .Entry (). Name ))
109109 // for security, make sure the browser and any proxies en route don't cache the response
110110 w .Header ().Set ("Cache-Control" , "no-store, must-revalidate" )
111111 w .Header ().Set ("Expires" , "0" )
@@ -173,12 +173,6 @@ func (oct ObjectController) UploadObject(ctx context.Context, w *api.JiaozifsRes
173173
174174 var response api.ObjectStats
175175 err = oct .Repo .Transaction (ctx , func (dRepo models.IRepo ) error {
176- treeOp := versionmgr.TreeOp {Object : dRepo .ObjectRepo ()}
177- blob , err := treeOp .WriteBlob (ctx , oct .BlockAdapter , reader , r .ContentLength , block.PutOpts {})
178- if err != nil {
179- return err
180- }
181-
182176 user , err := dRepo .UserRepo ().Get (ctx , & models.GetUserParam {Name : utils .String (userName )})
183177 if err != nil {
184178 return err
@@ -200,12 +194,17 @@ func (oct ObjectController) UploadObject(ctx context.Context, w *api.JiaozifsRes
200194 return err
201195 }
202196
203- workingTreeID , err := dRepo .ObjectRepo ().TreeNode (ctx , stash .CurrentTree )
197+ workingTree , err := versionmgr .NewWorkTree (ctx , dRepo .ObjectRepo (), models .NewRootTreeEntry (stash .CurrentTree ))
198+ if err != nil {
199+ return err
200+ }
201+
202+ blob , err := workingTree .WriteBlob (ctx , oct .BlockAdapter , reader , r .ContentLength , block.PutOpts {})
204203 if err != nil {
205204 return err
206205 }
207206
208- newRoot , err := treeOp .AddLeaf (ctx , workingTreeID , params .Path , blob )
207+ err = workingTree .AddLeaf (ctx , params .Path , blob )
209208 if err != nil {
210209 return err
211210 }
@@ -218,7 +217,7 @@ func (oct ObjectController) UploadObject(ctx context.Context, w *api.JiaozifsRes
218217 ContentType : & contentType ,
219218 Metadata : & api.ObjectUserMetadata {},
220219 }
221- return dRepo .WipRepo ().UpdateCurrentHash (ctx , stash .ID , newRoot . Hash )
220+ return dRepo .WipRepo ().UpdateCurrentHash (ctx , stash .ID , workingTree . Root (). Hash () )
222221 })
223222
224223 if err != nil {
0 commit comments