]> git.ipfire.org Git - thirdparty/git.git/commitdiff
docs/git: discuss server-side config for GIT_PROTOCOL
authorJeff King <peff@peff.net>
Fri, 10 Sep 2021 14:09:56 +0000 (10:09 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 10 Sep 2021 22:34:59 +0000 (15:34 -0700)
The v2 protocol requires that the GIT_PROTOCOL environment variable gets
passed around, but we don't have any documentation describing how this
is supposed to work. In particular, we need to note what server admins
might need to configure to make things work.

The definition of the GIT_PROTOCOL variable is probably the best place
for this, since:

  - we deal with multiple transports (ssh, http, etc).
    Transport-specific documentation (like the git-http-backend bits
    added in the previous commit) are helpful for those transports, but
    this gives a broader overview. Plus we do not have a specific
    transport endpoint program for ssh, so this is a reasonable place to
    mention it.

  - the server side of the protocol involves multiple programs. For now,
    upload-pack is the only endpoint which uses GIT_PROTOCOL, but that
    will likely expand in the future. We're better off with a central
    discussion of what the server admin might need to do. However, for
    discoverability, this patch adds a pointer from upload-pack's
    documentation.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-upload-pack.txt
Documentation/git.txt

index 9822c1eb1add168cdb30426bab04d925504d0205..070fc7800831b10dd9e840359a7dad8e87f745fd 100644 (file)
@@ -44,6 +44,14 @@ OPTIONS
 <directory>::
        The repository to sync from.
 
+ENVIRONMENT
+-----------
+
+`GIT_PROTOCOL`::
+       Internal variable used for handshaking the wire protocol. Server
+       admins may need to configure some transports to allow this
+       variable to be passed. See the discussion in linkgit:git[1].
+
 SEE ALSO
 --------
 linkgit:gitnamespaces[7]
index 6dd241ef83881d37e7b9db20ba6e1492d49ac36a..e4b82599fc86a3de48f4be1e016d6d675687b5b6 100644 (file)
@@ -894,6 +894,21 @@ for full details.
        Contains a colon ':' separated list of keys with optional values
        'key[=value]'.  Presence of unknown keys and values must be
        ignored.
++
+Note that servers may need to be configured to allow this variable to
+pass over some transports. It will be propagated automatically when
+accessing local repositories (i.e., `file://` or a filesystem path), as
+well as over the `git://` protocol. For git-over-http, it should work
+automatically in most configurations, but see the discussion in
+linkgit:git-http-backend[1]. For git-over-ssh, the ssh server may need
+to be configured to allow clients to pass this variable (e.g., by using
+`AcceptEnv GIT_PROTOCOL` with OpenSSH).
++
+This configuration is optional. If the variable is not propagated, then
+clients will fall back to the original "v0" protocol (but may miss out
+on some performance improvements or features). This variable currently
+only affects clones and fetches; it is not yet used for pushes (but may
+be in the future).
 
 `GIT_OPTIONAL_LOCKS`::
        If set to `0`, Git will complete any requested operation without