Documentation ¶
Index ¶
- Constants
- Variables
- func SearchPointerBlobs(ctx context.Context, repo *git.Repository, pointerChan chan<- PointerBlob, ...)
- type AuthenticateResponse
- type BasicTransferAdapter
- func (a *BasicTransferAdapter) Download(ctx context.Context, _ Pointer, l *Link) (io.ReadCloser, error)
- func (a *BasicTransferAdapter) Name() string
- func (a *BasicTransferAdapter) Upload(ctx context.Context, p Pointer, r io.Reader, l *Link) error
- func (a *BasicTransferAdapter) Verify(ctx context.Context, p Pointer, l *Link) error
- type BatchRequest
- type BatchResponse
- type Client
- type DownloadCallback
- type Endpoint
- type ErrorResponse
- type Link
- type Lock
- type LockCreateRequest
- type LockDeleteRequest
- type LockListResponse
- type LockResponse
- type LockVerifyRequest
- type LockVerifyResponse
- type ObjectError
- type ObjectResponse
- type Owner
- type Pointer
- type PointerBlob
- type Reference
- type TransferAdapter
- type UploadCallback
Constants ¶
const ( // MediaType contains the media type for LFS server requests. MediaType = "application/vnd.git-lfs+json" // OperationDownload is the operation name for a download request. OperationDownload = "download" // OperationUpload is the operation name for an upload request. OperationUpload = "upload" // ActionDownload is the action name for a download request. ActionDownload = OperationDownload // ActionUpload is the action name for an upload request. ActionUpload = OperationUpload // ActionVerify is the action name for a verify request. ActionVerify = "verify" // DefaultLocksLimit is the default number of locks to return in a single // request. DefaultLocksLimit = 20 )
const ( // HashAlgorithmSHA256 is the hash algorithm used for Git LFS. HashAlgorithmSHA256 = "sha256" // MetaFileIdentifier is the string appearing at the first line of LFS pointer files. // https://github.com/git-lfs/git-lfs/blob/master/docs/spec.md MetaFileIdentifier = "version https://git-lfs.github.com/spec/v1" // MetaFileOidPrefix appears in LFS pointer files on a line before the sha256 hash. MetaFileOidPrefix = "oid " + HashAlgorithmSHA256 + ":" )
const TransferBasic = "basic"
TransferBasic is the name of the Git LFS basic transfer protocol.
Variables ¶
var ( // ErrMissingPrefix occurs if the content lacks the LFS prefix ErrMissingPrefix = errors.New("Content lacks the LFS prefix") // ErrInvalidStructure occurs if the content has an invalid structure ErrInvalidStructure = errors.New("Content has an invalid structure") // ErrInvalidOIDFormat occurs if the oid has an invalid format ErrInvalidOIDFormat = errors.New("OID has an invalid format") )
Functions ¶
func SearchPointerBlobs ¶
func SearchPointerBlobs(ctx context.Context, repo *git.Repository, pointerChan chan<- PointerBlob, errChan chan<- error)
SearchPointerBlobs scans the whole repository for LFS pointer files
Types ¶
type AuthenticateResponse ¶
type AuthenticateResponse struct { Header map[string]string `json:"header"` Href string `json:"href"` ExpiresIn time.Duration `json:"expires_in"` ExpiresAt time.Time `json:"expires_at"` }
AuthenticateResponse is the git-lfs-authenticate JSON response object.
type BasicTransferAdapter ¶
type BasicTransferAdapter struct {
// contains filtered or unexported fields
}
BasicTransferAdapter implements the "basic" adapter
func (*BasicTransferAdapter) Download ¶
func (a *BasicTransferAdapter) Download(ctx context.Context, _ Pointer, l *Link) (io.ReadCloser, error)
Download reads the download location and downloads the data
func (*BasicTransferAdapter) Name ¶
func (a *BasicTransferAdapter) Name() string
Name returns the name of the adapter
type BatchRequest ¶
type BatchRequest struct { Operation string `json:"operation"` Transfers []string `json:"transfers,omitempty"` Ref *Reference `json:"ref,omitempty"` Objects []Pointer `json:"objects"` HashAlgo string `json:"hash_algo,omitempty"` }
BatchRequest contains multiple requests processed in one batch operation. https://github.com/git-lfs/git-lfs/blob/main/docs/api/batch.md#requests
type BatchResponse ¶
type BatchResponse struct { Transfer string `json:"transfer,omitempty"` Objects []*ObjectResponse `json:"objects"` HashAlgo string `json:"hash_algo,omitempty"` }
BatchResponse contains multiple object metadata Representation structures for use with the batch API. https://github.com/git-lfs/git-lfs/blob/main/docs/api/batch.md#successful-responses
type Client ¶
type Client interface { Download(ctx context.Context, objects []Pointer, callback DownloadCallback) error Upload(ctx context.Context, objects []Pointer, callback UploadCallback) error }
Client is a Git LFS client to communicate with a LFS source API.
type DownloadCallback ¶
type DownloadCallback func(p Pointer, content io.ReadCloser, objectError error) error
DownloadCallback gets called for every requested LFS object to process its content
type Endpoint ¶
Endpoint is a Git LFS endpoint.
func NewEndpoint ¶
NewEndpoint returns a new Git LFS endpoint.
type ErrorResponse ¶
type ErrorResponse struct { Message string `json:"message,omitempty"` DocumentationURL string `json:"documentation_url,omitempty"` RequestID string `json:"request_id,omitempty"` }
ErrorResponse describes the error to the client.
type Link ¶
type Link struct { Href string `json:"href"` Header map[string]string `json:"header,omitempty"` ExpiresAt *time.Time `json:"expires_at,omitempty"` ExpiresIn *time.Duration `json:"expires_in,omitempty"` }
Link provides a structure with information about how to access a object.
type Lock ¶
type Lock struct { ID string `json:"id"` Path string `json:"path"` LockedAt time.Time `json:"locked_at"` Owner Owner `json:"owner,omitempty"` }
Lock contains the response data for creating a lock. https://github.com/git-lfs/git-lfs/blob/main/docs/api/locking.md https://github.com/git-lfs/git-lfs/blob/main/locking/schemas/http-lock-create-response-schema.json
type LockCreateRequest ¶
LockCreateRequest contains the request data for creating a lock. https://github.com/git-lfs/git-lfs/blob/main/docs/api/locking.md https://github.com/git-lfs/git-lfs/blob/main/locking/schemas/http-lock-create-request-schema.json
type LockDeleteRequest ¶
type LockDeleteRequest struct { Force bool `json:"force,omitempty"` Ref Reference `json:"ref,omitempty"` }
LockDeleteRequest contains the request data for deleting a lock. https://github.com/git-lfs/git-lfs/blob/main/docs/api/locking.md https://github.com/git-lfs/git-lfs/blob/main/locking/schemas/http-lock-delete-request-schema.json
type LockListResponse ¶
type LockListResponse struct { Locks []Lock `json:"locks"` NextCursor string `json:"next_cursor,omitempty"` }
LockListResponse contains the response data for listing locks. https://github.com/git-lfs/git-lfs/blob/main/docs/api/locking.md https://github.com/git-lfs/git-lfs/blob/main/locking/schemas/http-lock-list-response-schema.json
type LockResponse ¶
type LockResponse struct { Lock Lock `json:"lock"` ErrorResponse }
LockResponse contains the response data for a lock.
type LockVerifyRequest ¶
type LockVerifyRequest struct { Ref Reference `json:"ref,omitempty"` Cursor string `json:"cursor,omitempty"` Limit int `json:"limit,omitempty"` }
LockVerifyRequest contains the request data for verifying a lock.
type LockVerifyResponse ¶
type LockVerifyResponse struct { Ours []Lock `json:"ours"` Theirs []Lock `json:"theirs"` NextCursor string `json:"next_cursor,omitempty"` }
LockVerifyResponse contains the response data for verifying a lock. https://github.com/git-lfs/git-lfs/blob/main/docs/api/locking.md https://github.com/git-lfs/git-lfs/blob/main/locking/schemas/http-lock-verify-response-schema.json
type ObjectError ¶
ObjectError defines the JSON structure returned to the client in case of an error.
type ObjectResponse ¶
type ObjectResponse struct { Pointer Actions map[string]*Link `json:"actions,omitempty"` Error *ObjectError `json:"error,omitempty"` }
ObjectResponse is object metadata as seen by clients of the LFS server.
type Owner ¶
type Owner struct {
Name string `json:"name"`
}
Owner contains the owner data for a lock.
type Pointer ¶
Pointer contains LFS pointer data
func GeneratePointer ¶
GeneratePointer generates a pointer for arbitrary content
func ReadPointer ¶
ReadPointer tries to read LFS pointer data from the reader
func ReadPointerFromBuffer ¶
ReadPointerFromBuffer will return a pointer if the provided byte slice is a pointer file or an error otherwise.
func (Pointer) IsValid ¶
IsValid checks if the pointer has a valid structure. It doesn't check if the pointed-to-content exists.
func (Pointer) RelativePath ¶
RelativePath returns the relative storage path of the pointer https://github.com/git-lfs/git-lfs/blob/main/docs/spec.md#intercepting-git
func (Pointer) String ¶
String returns the string representation of the pointer https://github.com/git-lfs/git-lfs/blob/main/docs/spec.md#the-pointer
type PointerBlob ¶
PointerBlob associates a Git blob with a Pointer.
type Reference ¶
type Reference struct {
Name string `json:"name"`
}
Reference contains a git reference. https://github.com/git-lfs/git-lfs/blob/main/docs/api/batch.md#ref-property
type TransferAdapter ¶
type TransferAdapter interface { Name() string Download(ctx context.Context, p Pointer, l *Link) (io.ReadCloser, error) Upload(ctx context.Context, p Pointer, r io.Reader, l *Link) error Verify(ctx context.Context, p Pointer, l *Link) error }
TransferAdapter represents an adapter for downloading/uploading LFS objects
type UploadCallback ¶
type UploadCallback func(p Pointer, objectError error) (io.ReadCloser, error)
UploadCallback gets called for every requested LFS object to provide its content