Add typed SSH remote endpoints
This commit is contained in:
@@ -20,13 +20,22 @@ committer. Only their affected paths are staged, unrelated index state is
|
||||
preserved, no-op mutations create no commit, and commit failures restore the
|
||||
index so the storage transaction can roll back its files.
|
||||
|
||||
## Remote endpoint contract
|
||||
|
||||
Storage parses credential-free HTTPS URLs plus feature-gated `ssh://` and
|
||||
scp-like SSH URLs into one typed endpoint contract. Local paths, `git://`,
|
||||
`file://`, helper transports, URL rewrites, separate push URLs, embedded
|
||||
credentials, and unknown schemes are rejected before transport. A build
|
||||
without the `ssh` feature reports SSH as unsupported before connection or
|
||||
repository mutation instead of treating its configuration as malformed.
|
||||
|
||||
## HTTPS transport
|
||||
|
||||
Remote URLs must be absolute, credential-free HTTPS URLs. SSH, scp syntax,
|
||||
`git://`, `file://`, local paths, helper transports, URL rewrites, separate push
|
||||
URLs, and unknown schemes are rejected before transport. Credentials are
|
||||
requested with the configured server ID and application ID and remain outside
|
||||
Git configuration.
|
||||
HTTPS credentials are requested with the configured server ID and application
|
||||
ID and remain outside Git configuration. The SSH session, host-verification,
|
||||
authentication, and pack-protocol implementations are separate milestone work;
|
||||
until those layers are present, network operations on SSH endpoints return the
|
||||
typed unsupported-transport result.
|
||||
|
||||
Fetch uses the embedded Rust smart-HTTP client with an explicit credential
|
||||
callback, so Git's credential cascade is never entered. Push implements the
|
||||
|
||||
Reference in New Issue
Block a user