Include Git LFS objects on project archive

I didn't see this mentioned anywhere else in Issues (or the Google), but it seems that the Gitlab archiver doesn't honor Git-LFS references in a repository when it's streaming an archive to a user. I encountered this in the sameersbn/gitlab:8.5.4 container.

To reproduce, create a Git repository with Git-LFS enabled, commit a Git-LFS-tracked file and push it to GitLab. Then click Download Zip. The created archive will have the Git-LFS reference instead of the actual file.

Assuming a user's intended result of clicking "Download Zip" is to receive a zip file with a Git-metadata-free snapshot of the repository as of a particular branch/commit, this seems like a bug. Particularly because the data needed for Git-LFS to resolve those files isn't included in the archive...

UPDATE: 2020-10-13

This is the data flow for handling this issue:

sequenceDiagram
     Client->>+Workhorse: GET /group/project/-/archive/master.zip
     Workhorse->>+Rails: GET /group/project/-/archive/master.zip
 	Rails->>+Workhorse: Gitlab-Workhorse-Send-Data git-archive
     Workhorse->>Gitaly: SendArchiveRequest
     Gitaly->>Git: git archive master
     Git->>Smudge: OID 12345
     Smudge->>+Workhorse: GET /internal/api/v4/lfs?oid=12345&gl_repository=project-1234
     Workhorse->>+Rails: GET /internal/api/v4/lfs?oid=12345&gl_repository=project-1234
     Rails->>+Workhorse: Gitlab-Workhorse-Send-Data send-url
     Workhorse->>Smudge: <LFS data>
     Smudge->>Git: <LFS data>
     Git->>Gitaly: <streamed data>
     Gitaly->>Workhorse: <streamed data>
     Workhorse->>Client: master.zip
Edited by Daniel Gruesso