]> git.ipfire.org Git - thirdparty/git.git/commitdiff
upload-pack: document and rename --advertise-refs
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 5 Aug 2021 01:25:43 +0000 (03:25 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Aug 2021 15:59:37 +0000 (08:59 -0700)
The --advertise-refs documentation in git-upload-pack added in
9812f2136b3 (upload-pack.c: use parse-options API, 2016-05-31) hasn't
been entirely true ever since v2 support was implemented in
e52449b6722 (connect: request remote refs using v2, 2018-03-15). Under
v2 we don't advertise the refs at all, but rather dump the
capabilities header.

This option has always been an obscure internal implementation detail,
it wasn't even documented for git-receive-pack. Since it has exactly
one user let's rename it to --http-backend-info-refs, which is more
accurate and points the reader in the right direction. Let's also
cross-link this from the protocol v1 and v2 documentation.

I'm retaining a hidden --advertise-refs alias in case there's any
external users of this, and making both options hidden to the bash
completion (as with most other internal-only options).

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-receive-pack.txt
Documentation/git-upload-pack.txt
Documentation/technical/http-protocol.txt
Documentation/technical/protocol-v2.txt
builtin/receive-pack.c
builtin/upload-pack.c
http-backend.c
t/t5555-http-smart-common.sh

index 25702ed73072f7375a08294a024e076862a5a170..014a78409b9473c10f62f85b21f9d9c6642ff844 100644 (file)
@@ -41,6 +41,11 @@ OPTIONS
 <directory>::
        The repository to sync into.
 
+--http-backend-info-refs::
+       Used by linkgit:git-http-backend[1] to serve up
+       `$GIT_URL/info/refs?service=git-receive-pack` requests. See
+       `--http-backend-info-refs` in linkgit:git-upload-pack[1].
+
 PRE-RECEIVE HOOK
 ----------------
 Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
index 9822c1eb1add168cdb30426bab04d925504d0205..739416ec83d0b0234e273e43ed2d2de949d6982b 100644 (file)
@@ -36,10 +36,14 @@ OPTIONS
        This fits with the HTTP POST request processing model where
        a program may read the request, write a response, and must exit.
 
---advertise-refs::
-       Only the initial ref advertisement is output, and the program exits
-       immediately. This fits with the HTTP GET request model, where
-       no request content is received but a response must be produced.
+--http-backend-info-refs::
+       Used by linkgit:git-http-backend[1] to serve up
+       `$GIT_URL/info/refs?service=git-upload-pack` requests. See
+       "Smart Clients" in link:technical/http-protocol.html[the HTTP
+       transfer protocols] documentation and "HTTP Transport" in
+       link:technical/protocol-v2.html[the Git Wire Protocol, Version
+       2] documentation. Also understood by
+       linkgit:git-receive-pack[1].
 
 <directory>::
        The repository to sync from.
index 96d89ea9b226136603a041e96789709c979883fd..cc5126cfedaac2e14e3de48d9cafeb3c58bbb03e 100644 (file)
@@ -225,6 +225,9 @@ The client may send Extra Parameters (see
 Documentation/technical/pack-protocol.txt) as a colon-separated string
 in the Git-Protocol HTTP header.
 
+Uses the `--http-backend-info-refs` option to
+linkgit:git-upload-pack[1].
+
 Dumb Server Response
 ^^^^^^^^^^^^^^^^^^^^
 Dumb servers MUST respond with the dumb server reply format.
index 1040d853198b87ef913ed9157301965dd4a50cd9..213538f1d0ebdc96e6b01869d7afe77bb09caeea 100644 (file)
@@ -81,6 +81,9 @@ A v2 server would reply:
 Subsequent requests are then made directly to the service
 `$GIT_URL/git-upload-pack`. (This works the same for git-receive-pack).
 
+Uses the `--http-backend-info-refs` option to
+linkgit:git-upload-pack[1].
+
 Capability Advertisement
 ------------------------
 
index 2d1f97e1ca7b5346d9cae3239165d6824df309af..7ffb45d70624374acdaff88dd5862f7d1e060ed3 100644 (file)
@@ -2477,7 +2477,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
        struct option options[] = {
                OPT__QUIET(&quiet, N_("quiet")),
                OPT_HIDDEN_BOOL(0, "stateless-rpc", &stateless_rpc, NULL),
-               OPT_HIDDEN_BOOL(0, "advertise-refs", &advertise_refs, NULL),
+               OPT_HIDDEN_BOOL(0, "http-backend-info-refs", &advertise_refs, NULL),
+               OPT_ALIAS(0, "advertise-refs", "http-backend-info-refs"),
                OPT_HIDDEN_BOOL(0, "reject-thin-pack-for-testing", &reject_thin, NULL),
                OPT_END()
        };
index 8506030a648e5b1866b233c93de4d2cb632fd9be..125af53885f89fbd4b691f5d9463774b12a66559 100644 (file)
@@ -22,8 +22,9 @@ int cmd_upload_pack(int argc, const char **argv, const char *prefix)
        struct option options[] = {
                OPT_BOOL(0, "stateless-rpc", &stateless_rpc,
                         N_("quit after a single request/response exchange")),
-               OPT_BOOL(0, "advertise-refs", &advertise_refs,
-                        N_("exit immediately after initial ref advertisement")),
+               OPT_HIDDEN_BOOL(0, "http-backend-info-refs", &advertise_refs,
+                               N_("serve up the info/refs for git-http-backend")),
+               OPT_ALIAS(0, "advertise-refs", "http-backend-info-refs"),
                OPT_BOOL(0, "strict", &strict,
                         N_("do not try <directory>/.git/ if <directory> is no Git directory")),
                OPT_INTEGER(0, "timeout", &timeout,
index d37463cec8bf814ff4552364c37871249324f28d..838374edb9193270287df3ab5904a25cb8f9422d 100644 (file)
@@ -534,7 +534,7 @@ static void get_info_refs(struct strbuf *hdr, char *arg)
 
        if (service_name) {
                const char *argv[] = {NULL /* service name */,
-                       "--advertise-refs",
+                       "--http-backend-info-refs",
                        ".", NULL};
                struct rpc_service *svc = select_service(hdr, service_name);
 
index b813099ed2ca72d0078833222bf2c189771cf99a..49faf5e283bdb05b090f9682cd315e94eea4d217 100755 (executable)
@@ -8,6 +8,20 @@ test_expect_success 'setup' '
        test_commit --no-tag initial
 '
 
+test_expect_success 'git upload-pack --http-backend-info-refs and --advertise-refs are aliased' '
+       git upload-pack --http-backend-info-refs . >expected 2>err.expected &&
+       git upload-pack --advertise-refs . >actual 2>err.actual &&
+       test_cmp err.expected err.actual &&
+       test_cmp expected actual
+'
+
+test_expect_success 'git receive-pack --http-backend-info-refs and --advertise-refs are aliased' '
+       git receive-pack --http-backend-info-refs . >expected 2>err.expected &&
+       git receive-pack --advertise-refs . >actual 2>err.actual &&
+       test_cmp err.expected err.actual &&
+       test_cmp expected actual
+'
+
 test_expect_success 'git upload-pack --advertise-refs' '
        cat >expect <<-EOF &&
        $(git rev-parse HEAD) HEAD