•  
     
    story #12322 have git-lfs batch and basic transfer API
Summary
Empty
have git-lfs batch and basic transfer API
Empty

Overview

At this step, it's not meant to be used in production yet. Feature is hidden behind a feature flag.

This is the first story to have basic git lfs support that means

  • Only HTTPS support (ssh will come after)
  • Basic auth for transfers
  • No locks

The implementation is done outside restler, using front router.

Technical overview

POST https://tuleap.example.com/plugins/git/projectname/foo/bar.git/info/lfs/objects/batch

Check API reference. Implement the upload, download and verify actions. Permission for actions regarding to 'ref' are used. API rely on basic auth.

The batch upload "reserve" the object place temporarly (stored in DB) to ensure consistency between batch and PUT.

[PUT|GET] https://tuleap.example.com/plugins/gitlfs

Check API reference. Implement the data transfer (download & upload)

Note: the implementation need to check and ensure

  • What authorizations are needed between batch and transfert API
  • Storage: use flysystem to abstract storage means

The files are purged on project deletion.

There is not global reference counting at this time.

 

Empty
Empty
Status
Empty
Done
Development
  • [ ] Does it involves User Interface? 
  • [ ] Are there any mockups?
  • [ ] Are permissions checked?
  • [ ] Does it need Javascript development?
  • [ ] Does it need a forge upgrade bucket?
  • [ ] Does it need to execute things in system events?
  • [ ] Does it impact project creation (templates)?
  • [ ] Is it exploratory?
Empty
Details
#12322
Manuel Vacelet (vaceletm)
2018-12-05 08:38
2018-09-25 15:09
4255

References
Referencing story #12322

Git commit

tuleap/tuleap/stable

Be able to parse Git LFS Batch request d25e076c50
Handle authorization verification when processing Git LFS Batch requests bb09b85a12
Git LFS Batch Request route should only returns a 403 when the user can read but not write d6d4dd1e97
Move Git LFS to a dedicated plugin 11f242c3c7
Make the split token pattern reusable accross Tuleap parts 5371b191e5
Git LFS Batch request API processes upload request 632f4b1130
Handle authorization of basic transfer upload actions a2340ae100
Enforce the type of action for which a Git LFS action can be requested 3764c5a1d9
Extract authorization verification from the basic transfer upload controller 17df4ed217
Add a verify action when responding to a batch upload request 29cbbeb22f
Requests accepting a Git LFS response should not be rejected by the Git LFS API 2c5d98b659
Fix Git LFS action content response format 0ce01fab48
Extract the LFS Object representation from the batch request representation 56397a01fc
Git LFS client can be used to upload files 0ef29850f8
SHA-256 of LFS objects is computed while saving it f17769c466
Git LFS objects can be downloaded with the client 5b0ab1d21b
Objects already uploaded for a repository should not be uploaded again abfa4b636f
Do not write more than the initially announced size of an object 137c606b6b
Do not use Object as part of the namespace 8c32d5b82d
Ownership of the file must be proved before being added to a repository aefd34e3c1
Deploy a nginx configuration adapted to large file upload d9dafef376
Delete unused object files d61f5fae3f
Package the Git LFS plugin cb787f60ac
References to LFS objects must be duplicated when a repository is forked 47ae4f86bc

Follow-ups

User avatar
Thomas Gerbet (tgerbet)2018-11-20 13:49
Storage of Git LFS objects is going to be done at the instance level to allow for de-duplication of objects between repositories of the whole instance.

  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes