git-remote — callable fetch / push / clone / ls-remote orchestration.
This crate lifts the network-transport orchestration out of the git-cli
monolith so it can be driven as a library (the way a downstream consumer such
as heddle needs). The wire codecs ([sley_protocol]), the pack encoder
([sley_pack]), pack building ([sley_odb]) and ref/commit plumbing already
live in their own crates; git-remote is the glue that sequences them into
fetch/push/clone/ls-remote, with the CLI-specific concerns (argument
parsing, stdout/stderr formatting, exit codes, repository discovery from
process-global state) kept out via the seams below:
- [
CredentialProvider] — how authenticated remotes obtain credentials. The caller injects one (e.g. a credential-helper-backed impl, an interactive prompt, or [NoCredentials] for unauthenticated/public access). - [
ProgressSink] — where human-facing progress/summary lines go. The orchestration returns structured outcomes and emits progress through this sink instead of printing, so the caller controls presentation.
The lift proceeds in stages (see docs/git-remote-extraction.md); this is
the scaffold (stage A).