Expand description
Concurrent transfer queue + transfer adapters for git-lfs.
This is the orchestration layer: take a list of objects, call the batch
API to negotiate URLs, then drive the actual byte movement (downloads
into git_lfs_store::Store, uploads from it). v0 only ships the
basic adapter (docs/api/basic-transfers.md); tus, custom, and ssh
adapters live in NOTES.md as deferred work.
§Concurrency
Transfer runs at most TransferConfig::concurrency in-flight
transfers at once. Each transfer uses its own retry loop with
exponential backoff per TransferConfig.
§Sync/async bridge
git_lfs_store::Store is a sync API. Downloads pipe HTTP body bytes
through tokio_util::io::SyncIoBridge into a spawn_blocking task
that calls store.insert_verified, so we never buffer the full object
in memory.
Structs§
- Report
- Aggregate outcome of a transfer batch.
- Transfer
- Concurrent transfer queue. One
Transferis bound to one LFS endpoint (theapiclient) and one local store; create more if you need more. - Transfer
Config - Tunables for the transfer queue.
Enums§
- Event
- Per-object lifecycle events emitted by
Transfer::downloadandTransfer::upload. - Transfer
Error - Why a per-object transfer failed.