git-remote-ext(1)
=================

NAME
----
git-remote-ext - Bridge smart transport to external command.

SYNOPSIS
--------
git remote add <nick> "ext::<command>[ <arguments>...]"

DESCRIPTION
-----------
This remote helper uses the specified '<command>' to connect
to a remote git server.

Data written to stdin of the specified '<command>' is assumed
to be sent to a git:// server, git-upload-pack, git-receive-pack
or git-upload-archive (depending on situation), and data read
from stdout of <command> is assumed to be received from
the same service.

Command and arguments are separated by an unescaped space.

The following sequences have a special meaning:

'% '::
	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:
---------
This remote helper is transparently used by git when
you use commands such as "git fetch <URL>", "git clone <URL>",
, "git push <URL>" or "git remote add <nick> <URL>", where <URL>
begins with `ext::`.  Examples:

"ext::ssh -i /home/foo/.ssh/somekey user&#64;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 accessable 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 '/repo with 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).

Documentation
--------------
Documentation by Ilari Liusvaara, Jonathan Nieder and the git list
<git@vger.kernel.org>

GIT
---
Part of the linkgit:git[1] suite
