From 7844bf1430d5d2701c70ff525b6455c10cb23484 Mon Sep 17 00:00:00 2001 From: Abner Date: Sun, 22 Aug 2021 02:22:06 +0800 Subject: Download lfs in git and web workflow from minio/s3 directly (#16731) --- services/lfs/server.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'services/lfs/server.go') diff --git a/services/lfs/server.go b/services/lfs/server.go index 0d357939d5..81d535beec 100644 --- a/services/lfs/server.go +++ b/services/lfs/server.go @@ -21,6 +21,7 @@ import ( lfs_module "code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/storage" "github.com/golang-jwt/jwt" ) @@ -401,6 +402,13 @@ func buildObjectResponse(rc *requestContext, pointer lfs_module.Pointer, downloa if download { rep.Actions["download"] = &lfs_module.Link{Href: rc.DownloadLink(pointer), Header: header} + if setting.LFS.ServeDirect { + //If we have a signed url (S3, object storage), redirect to this directly. + u, err := storage.LFS.URL(pointer.RelativePath(), pointer.Oid) + if u != nil && err == nil { + rep.Actions["download"] = &lfs_module.Link{Href: u.String(), Header: header} + } + } } if upload { rep.Actions["upload"] = &lfs_module.Link{Href: rc.UploadLink(pointer), Header: header} -- cgit v1.2.3