git-remote-ext
Bridge smart transport to external command .
SYNOPSIS
git remote add <nick> "ext::<command>[ <arguments> ...]"
DESCRIPTION
(Aq% (Aq Literal space in command or argument .
%% Literal percent sign .
%s Replaced with name (receive -pack, upload -pack, or upload -archive) of the service Git wants to invoke .
%S Replaced with long name (git -receive -pack, git -upload -pack, or git -upload -archive) of the service Git wants to invoke .
%G (must be the first characters in an argument) This argument will not be passed to <command> . Instead, it will cause the helper to start by sending git:// service requests to the remote side with the service field set to an appropriate value and the repository field set to rest of the argument . Default is not to send such a request . This is useful if remote side is git:// server accessed over some tunnel .
%V (must be first characters in argument) This argument will not be passed to <command> . Instead it sets the vhost field in the git:// service request (to rest of the argument) . Default is not to send vhost in such request (if sent) .
ENVIRONMENT VARIABLES
GIT_TRANSLOOP_DEBUG If set, prints debugging information about various reads/writes .
ENVIRONMENT VARIABLES PASSED TO COMMAND
GIT_EXT_SERVICE Set to long name (git -upload -pack, etc ...) of service helper needs to invoke .
GIT_EXT_SERVICE_NOPREFIX Set to long name (upload -pack, etc ...) of service helper needs to invoke .
EXAMPLES
"ext::ssh -i /home/foo/ .ssh/somekey user@host .example %S foo/repo " Like host .example:foo/repo, but use /home/foo/ .ssh/somekey as keypair and user as user on remote side . This avoids needing to edit .ssh/config .
"ext::socat -t3600 -ABSTRACT -CONNECT:/git -server %G/somerepo" Represents repository with path /somerepo accessible over git protocol at abstract namespace address /git -server .
"ext::git -server -alias foo %G/repo" Represents a repository with path /repo accessed using the helper program "git -server -alias foo" . The path to the repository and type of request are not passed on the command line but as part of the protocol stream, as usual with git:// protocol .
"ext::git -server -alias foo %G/repo %Vfoo" Represents a repository with path /repo accessed using the helper program "git -server -alias foo" . The hostname for the remote server passed in the protocol stream will be "foo" (this allows multiple virtual Git servers to share a link -level address) .
"ext::git -server -alias foo %G/repo% with% spaces %Vfoo" Represents a repository with path /repowith spaces accessed using the helper program "git -server -alias foo" . The hostname for the remote server passed in the protocol stream will be "foo" (this allows multiple virtual Git servers to share a link -level address) .
"ext::git -ssl foo .example /bar" Represents a repository accessed using the helper program "git -ssl foo .example /bar" . The type of request can be determined by the helper using environment variables (see above) .