| '\" t |
| .\" Title: git-remote-ext |
| .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] |
| .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> |
| .\" Date: 2024-04-25 |
| .\" Manual: Git Manual |
| .\" Source: Git 2.45.0.rc1.8.ge326e52010 |
| .\" Language: English |
| .\" |
| .TH "GIT\-REMOTE\-EXT" "1" "2024\-04\-25" "Git 2\&.45\&.0\&.rc1\&.8\&.ge3" "Git Manual" |
| .\" ----------------------------------------------------------------- |
| .\" * Define some portability stuff |
| .\" ----------------------------------------------------------------- |
| .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| .\" http://bugs.debian.org/507673 |
| .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html |
| .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| .ie \n(.g .ds Aq \(aq |
| .el .ds Aq ' |
| .\" ----------------------------------------------------------------- |
| .\" * set default formatting |
| .\" ----------------------------------------------------------------- |
| .\" disable hyphenation |
| .nh |
| .\" disable justification (adjust text to left margin only) |
| .ad l |
| .\" ----------------------------------------------------------------- |
| .\" * MAIN CONTENT STARTS HERE * |
| .\" ----------------------------------------------------------------- |
| .SH "NAME" |
| git-remote-ext \- Bridge smart transport to external command\&. |
| .SH "SYNOPSIS" |
| .sp |
| .nf |
| git remote add <nick> "ext::<command>[ <arguments>\&...]" |
| .fi |
| .sp |
| .SH "DESCRIPTION" |
| .sp |
| This remote helper uses the specified \fI<command>\fR to connect to a remote Git server\&. |
| .sp |
| Data written to stdin of the specified \fI<command>\fR 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\&. |
| .sp |
| Command and arguments are separated by an unescaped space\&. |
| .sp |
| The following sequences have a special meaning: |
| .PP |
| \*(Aq% \*(Aq |
| .RS 4 |
| Literal space in command or argument\&. |
| .RE |
| .PP |
| \fI%%\fR |
| .RS 4 |
| Literal percent sign\&. |
| .RE |
| .PP |
| \fI%s\fR |
| .RS 4 |
| Replaced with name (receive\-pack, upload\-pack, or upload\-archive) of the service Git wants to invoke\&. |
| .RE |
| .PP |
| \fI%S\fR |
| .RS 4 |
| Replaced with long name (git\-receive\-pack, git\-upload\-pack, or git\-upload\-archive) of the service Git wants to invoke\&. |
| .RE |
| .PP |
| \fI%G\fR (must be the first characters in an argument) |
| .RS 4 |
| This argument will not be passed to |
| \fI<command>\fR\&. 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 the rest of the argument\&. Default is not to send such a request\&. |
| .sp |
| This is useful if the remote side is git:// server accessed over some tunnel\&. |
| .RE |
| .PP |
| \fI%V\fR (must be first characters in argument) |
| .RS 4 |
| This argument will not be passed to |
| \fI<command>\fR\&. Instead it sets the vhost field in the git:// service request (to the rest of the argument)\&. Default is not to send vhost in such request (if sent)\&. |
| .RE |
| .SH "ENVIRONMENT VARIABLES" |
| .PP |
| GIT_TRANSLOOP_DEBUG |
| .RS 4 |
| If set, prints debugging information about various reads/writes\&. |
| .RE |
| .SH "ENVIRONMENT VARIABLES PASSED TO COMMAND" |
| .PP |
| GIT_EXT_SERVICE |
| .RS 4 |
| Set to long name (git\-upload\-pack, etc\&...) of service helper needs to invoke\&. |
| .RE |
| .PP |
| GIT_EXT_SERVICE_NOPREFIX |
| .RS 4 |
| Set to long name (upload\-pack, etc\&...) of service helper needs to invoke\&. |
| .RE |
| .SH "EXAMPLES" |
| .sp |
| 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 \fBext::\fR\&. Examples: |
| .PP |
| "ext::ssh \-i /home/foo/\&.ssh/somekey user@host\&.example %S \fIfoo/repo\fR" |
| .RS 4 |
| Like host\&.example:foo/repo, but use /home/foo/\&.ssh/somekey as keypair and user as the user on the remote side\&. This avoids the need to edit \&.ssh/config\&. |
| .RE |
| .PP |
| "ext::socat \-t3600 \- ABSTRACT\-CONNECT:/git\-server %G/somerepo" |
| .RS 4 |
| Represents repository with path /somerepo accessible over git protocol at the abstract namespace address /git\-server\&. |
| .RE |
| .PP |
| "ext::git\-server\-alias foo %G/repo" |
| .RS 4 |
| 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\&. |
| .RE |
| .PP |
| "ext::git\-server\-alias foo %G/repo %Vfoo" |
| .RS 4 |
| 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)\&. |
| .RE |
| .PP |
| "ext::git\-server\-alias foo %G/repo% with% spaces %Vfoo" |
| .RS 4 |
| Represents a repository with path |
| \fB/repo with spaces\fR |
| 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)\&. |
| .RE |
| .PP |
| "ext::git\-ssl foo\&.example /bar" |
| .RS 4 |
| 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)\&. |
| .RE |
| .SH "SEE ALSO" |
| .sp |
| \fBgitremote-helpers\fR(7) |
| .SH "GIT" |
| .sp |
| Part of the \fBgit\fR(1) suite |