Skip to content

Commit 209ff38

Browse files
brechtvlbartvdbraak
authored andcommitted
BLENDER: Workaround LFS files not being available in pull requests
Patch taken from issue number 17715, associating the LFS pointer when the file is downloaded.
1 parent 1efcc7a commit 209ff38

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

models/git/lfs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ func CountLFSMetaObjects(ctx context.Context, repoID int64) (int64, error) {
236236

237237
// LFSObjectAccessible checks if a provided Oid is accessible to the user
238238
func LFSObjectAccessible(ctx context.Context, user *user_model.User, oid string) (bool, error) {
239-
if user.IsAdmin {
239+
if user != nil && user.IsAdmin {
240240
count, err := db.GetEngine(ctx).Count(&LFSMetaObject{Pointer: lfs.Pointer{Oid: oid}})
241241
return count > 0, err
242242
}

services/lfs/server.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,26 @@ func BatchHandler(ctx *context.Context) {
254254
responseObject = buildObjectResponse(rc, p, false, !exists, err)
255255
} else {
256256
var err *lfs_module.ObjectError
257+
258+
if exists && meta == nil {
259+
accessible, accessibleErr := git_model.LFSObjectAccessible(ctx, ctx.Doer, p.Oid)
260+
if accessibleErr != nil {
261+
log.Error("Unable to check if LFS MetaObject [%s] is accessible. Error: %v", p.Oid, err)
262+
writeStatus(ctx, http.StatusInternalServerError)
263+
return
264+
}
265+
if accessible {
266+
_, newMetaObjErr := git_model.NewLFSMetaObject(ctx, repository.ID, p)
267+
if newMetaObjErr != nil {
268+
log.Error("Unable to create LFS MetaObject [%s] for %s/%s. Error: %v", p.Oid, rc.User, rc.Repo, err)
269+
writeStatus(ctx, http.StatusInternalServerError)
270+
return
271+
}
272+
} else {
273+
exists = false
274+
}
275+
}
276+
257277
if !exists || meta == nil {
258278
err = &lfs_module.ObjectError{
259279
Code: http.StatusNotFound,

0 commit comments

Comments
 (0)