gitremote-helpers(1)
====================

NAME
----
gitremote-helpers - Helper programs to interact with remote repositories

SYNOPSIS
--------
[verse]
'git remote-<transport>' <repository> [<URL>]

DESCRIPTION
-----------

Remote helper programs are normally not used directly by end users,
but they are invoked by Git when it needs to interact with remote
repositories Git does not support natively.  A given helper will
implement a subset of the capabilities documented here. When Git
needs to interact with a repository using a remote helper, it spawns
the helper as an independent process, sends commands to the helper's
standard input, and expects results from the helper's standard
output. Because a remote helper runs as an independent process from
Git, there is no need to re-link Git to add a new helper, nor any
need to link the helper with the implementation of Git.

Every helper must support the "capabilities" command, which Git
uses to determine what other commands the helper will accept.  Those
other commands can be used to discover and update remote refs,
transport objects between the object database and the remote repository,
and update the local object store.

Git comes with a "curl" family of remote helpers, that handle various
transport protocols, such as 'git-remote-http', 'git-remote-https',
'git-remote-ftp' and 'git-remote-ftps'. They implement the capabilities
'fetch', 'option', and 'push'.

INVOCATION
----------

Remote helper programs are invoked with one or (optionally) two
arguments. The first argument specifies a remote repository as in Git;
it is either the name of a configured remote or a URL. The second
argument specifies a URL; it is usually of the form
'<transport>://<address>', but any arbitrary string is possible.
The 'GIT_DIR' environment variable is set up for the remote helper
and can be used to determine where to store additional data or from
which directory to invoke auxiliary Git commands.

When Git encounters a URL of the form '<transport>://<address>', where
'<transport>' is a protocol that it cannot handle natively, it
automatically invokes 'git remote-<transport>' with the full URL as
the second argument. If such a URL is encountered directly on the
command line, the first argument is the same as the second, and if it
is encountered in a configured remote, the first argument is the name
of that remote.

A URL of the form '<transport>::<address>' explicitly instructs Git to
invoke 'git remote-<transport>' with '<address>' as the second
argument. If such a URL is encountered directly on the command line,
the first argument is '<address>', and if it is encountered in a
configured remote, the first argument is the name of that remote.

Additionally, when a configured remote has 'remote.<name>.vcs' set to
'<transport>', Git explicitly invokes 'git remote-<transport>' with
'<name>' as the first argument. If set, the second argument is
'remote.<name>.url'; otherwise, the second argument is omitted.

INPUT FORMAT
------------

Git sends the remote helper a list of commands on standard input, one
per line.  The first command is always the 'capabilities' command, in
response to which the remote helper must print a list of the
capabilities it supports (see below) followed by a blank line.  The
response to the capabilities command determines what commands Git uses
in the remainder of the command stream.

The command stream is terminated by a blank line.  In some cases
(indicated in the documentation of the relevant commands), this blank
line is followed by a payload in some other protocol (e.g., the pack
protocol), while in others it indicates the end of input.

Capabilities
~~~~~~~~~~~~

Each remote helper is expected to support only a subset of commands.
The operations a helper supports are declared to Git in the response
to the `capabilities` command (see COMMANDS, below).

In the following, we list all defined capabilities and for
each we list which commands a helper with that capability
must provide.

Capabilities for Pushing
^^^^^^^^^^^^^^^^^^^^^^^^
'connect'::
	Can attempt to connect to 'git receive-pack' (for pushing),
	'git upload-pack', etc for communication using
	git's native packfile protocol. This
	requires a bidirectional, full-duplex connection.
+
Supported commands: 'connect'.

'push'::
	Can discover remote refs and push local commits and the
	history leading up to them to new or existing remote refs.
+
Supported commands: 'list for-push', 'push'.

'export'::
	Can discover remote refs and push specified objects from a
	fast-import stream to remote refs.
+
Supported commands: 'list for-push', 'export'.

If a helper advertises 'connect', Git will use it if possible and
fall back to another capability if the helper requests so when
connecting (see the 'connect' command under COMMANDS).
When choosing between 'push' and 'export', Git prefers 'push'.
Other frontends may have some other order of preference.


Capabilities for Fetching
^^^^^^^^^^^^^^^^^^^^^^^^^
'connect'::
	Can try to connect to 'git upload-pack' (for fetching),
	'git receive-pack', etc for communication using the
	Git's native packfile protocol. This
	requires a bidirectional, full-duplex connection.
+
Supported commands: 'connect'.

'fetch'::
	Can discover remote refs and transfer objects reachable from
	them to the local object store.
+
Supported commands: 'list', 'fetch'.

'import'::
	Can discover remote refs and output objects reachable from
	them as a stream in fast-import format.
+
Supported commands: 'list', 'import'.

If a helper advertises 'connect', Git will use it if possible and
fall back to another capability if the helper requests so when
connecting (see the 'connect' command under COMMANDS).
When choosing between 'fetch' and 'import', Git prefers 'fetch'.
Other frontends may have some other order of preference.

Miscellaneous capabilities
^^^^^^^^^^^^^^^^^^^^^^^^^^

'option'::
	For specifying settings like `verbosity` (how much output to
	write to stderr) and `depth` (how much history is wanted in the
	case of a shallow clone) that affect how other commands are
	carried out.

'refspec' <refspec>::
	This modifies the 'import' capability, allowing the produced
	fast-import stream to modify refs in a private namespace
	instead of writing to refs/heads or refs/remotes directly.
	It is recommended that all importers providing the 'import'
	capability use this.
+
A helper advertising the capability
`refspec refs/heads/*:refs/svn/origin/branches/*`
is saying that, when it is asked to `import refs/heads/topic`, the
stream it outputs will update the `refs/svn/origin/branches/topic`
ref.
+
This capability can be advertised multiple times.  The first
applicable refspec takes precedence.  The left-hand of refspecs
advertised with this capability must cover all refs reported by
the list command.  If no 'refspec' capability is advertised,
there is an implied `refspec *:*`.

'bidi-import'::
	This modifies the 'import' capability.
	The fast-import commands 'cat-blob' and 'ls' can be used by remote-helpers
	to retrieve information about blobs and trees that already exist in
	fast-import's memory. This requires a channel from fast-import to the
	remote-helper.
	If it is advertised in addition to "import", Git establishes a pipe from
	fast-import to the remote-helper's stdin.
	It follows that Git and fast-import are both connected to the
	remote-helper's stdin. Because Git can send multiple commands to
	the remote-helper it is required that helpers that use 'bidi-import'
	buffer all 'import' commands of a batch before sending data to fast-import.
	This is to prevent mixing commands and fast-import responses on the
	helper's stdin.

'export-marks' <file>::
	This modifies the 'export' capability, instructing Git to dump the
	internal marks table to <file> when complete. For details,
	read up on '--export-marks=<file>' in linkgit:git-fast-export[1].

'import-marks' <file>::
	This modifies the 'export' capability, instructing Git to load the
	marks specified in <file> before processing any input. For details,
	read up on '--import-marks=<file>' in linkgit:git-fast-export[1].




COMMANDS
--------

Commands are given by the caller on the helper's standard input, one per line.

'capabilities'::
	Lists the capabilities of the helper, one per line, ending
	with a blank line. Each capability may be preceded with '*',
	which marks them mandatory for Git versions using the remote
	helper to understand. Any unknown mandatory capability is a
	fatal error.
+
Support for this command is mandatory.

'list'::
	Lists the refs, one per line, in the format "<value> <name>
	[<attr> ...]". The value may be a hex sha1 hash, "@<dest>" for
	a symref, or "?" to indicate that the helper could not get the
	value of the ref. A space-separated list of attributes follows
	the name; unrecognized attributes are ignored. The list ends
	with a blank line.
+
See REF LIST ATTRIBUTES for a list of currently defined attributes.
+
Supported if the helper has the "fetch" or "import" capability.

'list for-push'::
	Similar to 'list', except that it is used if and only if
	the caller wants to the resulting ref list to prepare
	push commands.
	A helper supporting both push and fetch can use this
	to distinguish for which operation the output of 'list'
	is going to be used, possibly reducing the amount
	of work that needs to be performed.
+
Supported if the helper has the "push" or "export" capability.

'option' <name> <value>::
	Sets the transport helper option <name> to <value>.  Outputs a
	single line containing one of 'ok' (option successfully set),
	'unsupported' (option not recognized) or 'error <msg>'
	(option <name> is supported but <value> is not valid
	for it).  Options should be set before other commands,
	and may influence the behavior of those commands.
+
See OPTIONS for a list of currently defined options.
+
Supported if the helper has the "option" capability.

'fetch' <sha1> <name>::
	Fetches the given object, writing the necessary objects
	to the database.  Fetch commands are sent in a batch, one
	per line, terminated with a blank line.
	Outputs a single blank line when all fetch commands in the
	same batch are complete. Only objects which were reported
	in the output of 'list' with a sha1 may be fetched this way.
+
Optionally may output a 'lock <file>' line indicating a file under
GIT_DIR/objects/pack which is keeping a pack until refs can be
suitably updated.
+
Supported if the helper has the "fetch" capability.

'push' +<src>:<dst>::
	Pushes the given local <src> commit or branch to the
	remote branch described by <dst>.  A batch sequence of
	one or more 'push' commands is terminated with a blank line
	(if there is only one reference to push, a single 'push' command
	is followed by a blank line). For example, the following would
	be two batches of 'push', the first asking the remote-helper
	to push the local ref 'master' to the remote ref 'master' and
	the local 'HEAD' to the remote 'branch', and the second
	asking to push ref 'foo' to ref 'bar' (forced update requested
	by the '+').
+
------------
push refs/heads/master:refs/heads/master
push HEAD:refs/heads/branch
\n
push +refs/heads/foo:refs/heads/bar
\n
------------
+
Zero or more protocol options may be entered after the last 'push'
command, before the batch's terminating blank line.
+
When the push is complete, outputs one or more 'ok <dst>' or
'error <dst> <why>?' lines to indicate success or failure of
each pushed ref.  The status report output is terminated by
a blank line.  The option field <why> may be quoted in a C
style string if it contains an LF.
+
Supported if the helper has the "push" capability.

'import' <name>::
	Produces a fast-import stream which imports the current value
	of the named ref. It may additionally import other refs as
	needed to construct the history efficiently. The script writes
	to a helper-specific private namespace. The value of the named
	ref should be written to a location in this namespace derived
	by applying the refspecs from the "refspec" capability to the
	name of the ref.
+
Especially useful for interoperability with a foreign versioning
system.
+
Just like 'push', a batch sequence of one or more 'import' is
terminated with a blank line. For each batch of 'import', the remote
helper should produce a fast-import stream terminated by a 'done'
command.
+
Note that if the 'bidi-import' capability is used the complete batch
sequence has to be buffered before starting to send data to fast-import
to prevent mixing of commands and fast-import responses on the helper's
stdin.
+
Supported if the helper has the "import" capability.

'export'::
	Instructs the remote helper that any subsequent input is
	part of a fast-import stream (generated by 'git fast-export')
	containing objects which should be pushed to the remote.
+
Especially useful for interoperability with a foreign versioning
system.
+
The 'export-marks' and 'import-marks' capabilities, if specified,
affect this command in so far as they are passed on to 'git
fast-export', which then will load/store a table of marks for
local objects. This can be used to implement for incremental
operations.
+
Supported if the helper has the "export" capability.

'connect' <service>::
	Connects to given service. Standard input and standard output
	of helper are connected to specified service (git prefix is
	included in service name so e.g. fetching uses 'git-upload-pack'
	as service) on remote side. Valid replies to this command are
	empty line (connection established), 'fallback' (no smart
	transport support, fall back to dumb transports) and just
	exiting with error message printed (can't connect, don't
	bother trying to fall back). After line feed terminating the
	positive (empty) response, the output of service starts. After
	the connection ends, the remote helper exits.
+
Supported if the helper has the "connect" capability.

If a fatal error occurs, the program writes the error message to
stderr and exits. The caller should expect that a suitable error
message has been printed if the child closes the connection without
completing a valid response for the current command.

Additional commands may be supported, as may be determined from
capabilities reported by the helper.

REF LIST ATTRIBUTES
-------------------

The 'list' command produces a list of refs in which each ref
may be followed by a list of attributes. The following ref list
attributes are defined.

'unchanged'::
	This ref is unchanged since the last import or fetch, although
	the helper cannot necessarily determine what value that produced.

OPTIONS
-------

The following options are defined and (under suitable circumstances)
set by Git if the remote helper has the 'option' capability.

'option verbosity' <n>::
	Changes the verbosity of messages displayed by the helper.
	A value of 0 for <n> means that processes operate
	quietly, and the helper produces only error output.
	1 is the default level of verbosity, and higher values
	of <n> correspond to the number of -v flags passed on the
	command line.

'option progress' \{'true'|'false'\}::
	Enables (or disables) progress messages displayed by the
	transport helper during a command.

'option depth' <depth>::
	Deepens the history of a shallow repository.

'option followtags' \{'true'|'false'\}::
	If enabled the helper should automatically fetch annotated
	tag objects if the object the tag points at was transferred
	during the fetch command.  If the tag is not fetched by
	the helper a second fetch command will usually be sent to
	ask for the tag specifically.  Some helpers may be able to
	use this option to avoid a second network connection.

'option dry-run' \{'true'|'false'\}:
	If true, pretend the operation completed successfully,
	but don't actually change any repository data.	For most
	helpers this only applies to the 'push', if supported.

'option servpath <c-style-quoted-path>'::
	Sets service path (--upload-pack, --receive-pack etc.) for
	next connect. Remote helper may support this option, but
	must not rely on this option being set before
	connect request occurs.

SEE ALSO
--------
linkgit:git-remote[1]

linkgit:git-remote-testgit[1]

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