{
    "content": [
        {
            "type": "text",
            "text": "# git-remote-ext(1) (man)\n\n**Summary:** git-remote-ext - Bridge smart transport to external command.\n\n**Synopsis:** git remote add <nick> \"ext::<command>[ <arguments>...]\"\n\n## Examples\n\n- `This remote helper is transparently used by Git when you use commands such as \"git fetch`\n- `<URL>\", \"git clone <URL>\", , \"git push <URL>\" or \"git remote add <nick> <URL>\", where <URL>`\n- `begins with ext::. Examples:`\n- `\"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S foo/repo\"`\n- `Like host.example:foo/repo, but use /home/foo/.ssh/somekey as keypair and user as user on`\n- `remote side. This avoids needing to edit .ssh/config.`\n- `\"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo\"`\n- `Represents repository with path /somerepo accessible over git protocol at abstract`\n- `namespace address /git-server.`\n- `\"ext::git-server-alias foo %G/repo\"`\n- `Represents a repository with path /repo accessed using the helper program`\n- `\"git-server-alias foo\". The path to the repository and type of request are not passed on`\n- `the command line but as part of the protocol stream, as usual with git:// protocol.`\n- `\"ext::git-server-alias foo %G/repo %Vfoo\"`\n- `Represents a repository with path /repo accessed using the helper program`\n- `\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream`\n- `will be \"foo\" (this allows multiple virtual Git servers to share a link-level address).`\n- `\"ext::git-server-alias foo %G/repo% with% spaces %Vfoo\"`\n- `Represents a repository with path /repo with spaces accessed using the helper program`\n- `\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream`\n- `will be \"foo\" (this allows multiple virtual Git servers to share a link-level address).`\n- `\"ext::git-ssl foo.example /bar\"`\n- `Represents a repository accessed using the helper program \"git-ssl foo.example /bar\". The`\n- `type of request can be determined by the helper using environment variables (see above).`\n\n## See Also\n\n- gitremote-helpers(7)\n\n## Section Outline\n\n- **NAME** (2 lines)\n- **SYNOPSIS** (3 lines)\n- **DESCRIPTION** (37 lines)\n- **ENVIRONMENT VARIABLES** (3 lines)\n- **ENVIRONMENT VARIABLES PASSED TO COMMAND** (6 lines)\n- **EXAMPLES** (31 lines)\n- **SEE ALSO** (2 lines)\n- **GIT** (5 lines)\n\n## Full Content\n\n### NAME\n\ngit-remote-ext - Bridge smart transport to external command.\n\n### SYNOPSIS\n\ngit remote add <nick> \"ext::<command>[ <arguments>...]\"\n\n### DESCRIPTION\n\nThis remote helper uses the specified <command> to connect to a remote Git server.\n\nData written to stdin of the specified <command> is assumed to be sent to a git:// server,\ngit-upload-pack, git-receive-pack or git-upload-archive (depending on situation), and data\nread from stdout of <command> is assumed to be received from the same service.\n\nCommand and arguments are separated by an unescaped space.\n\nThe following sequences have a special meaning:\n\n'% '\nLiteral space in command or argument.\n\n%%\nLiteral percent sign.\n\n%s\nReplaced with name (receive-pack, upload-pack, or upload-archive) of the service Git\nwants to invoke.\n\n%S\nReplaced with long name (git-receive-pack, git-upload-pack, or git-upload-archive) of the\nservice Git wants to invoke.\n\n%G (must be the first characters in an argument)\nThis argument will not be passed to <command>. Instead, it will cause the helper to start\nby sending git:// service requests to the remote side with the service field set to an\nappropriate value and the repository field set to rest of the argument. Default is not to\nsend such a request.\n\nThis is useful if remote side is git:// server accessed over some tunnel.\n\n%V (must be first characters in argument)\nThis argument will not be passed to <command>. Instead it sets the vhost field in the\ngit:// service request (to rest of the argument). Default is not to send vhost in such\nrequest (if sent).\n\n### ENVIRONMENT VARIABLES\n\nGITTRANSLOOPDEBUG\nIf set, prints debugging information about various reads/writes.\n\n### ENVIRONMENT VARIABLES PASSED TO COMMAND\n\nGITEXTSERVICE\nSet to long name (git-upload-pack, etc...) of service helper needs to invoke.\n\nGITEXTSERVICENOPREFIX\nSet to long name (upload-pack, etc...) of service helper needs to invoke.\n\n### EXAMPLES\n\nThis remote helper is transparently used by Git when you use commands such as \"git fetch\n<URL>\", \"git clone <URL>\", , \"git push <URL>\" or \"git remote add <nick> <URL>\", where <URL>\nbegins with ext::. Examples:\n\n\"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S foo/repo\"\nLike host.example:foo/repo, but use /home/foo/.ssh/somekey as keypair and user as user on\nremote side. This avoids needing to edit .ssh/config.\n\n\"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo\"\nRepresents repository with path /somerepo accessible over git protocol at abstract\nnamespace address /git-server.\n\n\"ext::git-server-alias foo %G/repo\"\nRepresents a repository with path /repo accessed using the helper program\n\"git-server-alias foo\". The path to the repository and type of request are not passed on\nthe command line but as part of the protocol stream, as usual with git:// protocol.\n\n\"ext::git-server-alias foo %G/repo %Vfoo\"\nRepresents a repository with path /repo accessed using the helper program\n\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream\nwill be \"foo\" (this allows multiple virtual Git servers to share a link-level address).\n\n\"ext::git-server-alias foo %G/repo% with% spaces %Vfoo\"\nRepresents a repository with path /repo with spaces accessed using the helper program\n\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream\nwill be \"foo\" (this allows multiple virtual Git servers to share a link-level address).\n\n\"ext::git-ssl foo.example /bar\"\nRepresents a repository accessed using the helper program \"git-ssl foo.example /bar\". The\ntype of request can be determined by the helper using environment variables (see above).\n\n### SEE ALSO\n\ngitremote-helpers(7)\n\n### GIT\n\nPart of the git(1) suite\n\n\n\nGit 2.34.1                                   02/26/2026                            GIT-REMOTE-EXT(1)\n\n"
        }
    ],
    "structuredContent": {
        "command": "git-remote-ext",
        "section": "1",
        "mode": "man",
        "summary": "git-remote-ext - Bridge smart transport to external command.",
        "synopsis": "git remote add <nick> \"ext::<command>[ <arguments>...]\"",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "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@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 /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)."
        ],
        "see_also": [
            {
                "name": "gitremote-helpers",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/gitremote-helpers/7/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 37,
                "subsections": []
            },
            {
                "name": "ENVIRONMENT VARIABLES",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "ENVIRONMENT VARIABLES PASSED TO COMMAND",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "EXAMPLES",
                "lines": 31,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "GIT",
                "lines": 5,
                "subsections": []
            }
        ]
    }
}