In the external special remote protocol, the File
parameter of various requests is specified to be a regular file. If it could be a named pipe, this would open up useful possibilities: git-annex-cat, transitive transfers, git-annex-export --from option, OPT: "bundle" get + check (of checksum) in a single operation, to and from multiple remotes, faster git-annex-fsck --from
, passing named pipes on git-annex
command line (for streaming the outputs of a running command directly to a remote, or using git-annex
as a building block of larger workflows), and maybe others.
An optional protocol request NAMEDPIPESSUPPORTED
, similar to EXPORTSUPPORTED
, could tell git-annex
that the remote supports named pipes. For remotes that don't declare such support, it could be emulated: before sending e.g. TRANSFER STORE Key File
, if File
is a pipe and the remote hasn't said it supports pipes, git-annex
would drain the pipe to a TempFile
and then send TRANSFER STORE Key TempFile
instead. Then the rest of git-annex
can presume pipes support.