git-commit-vandalism/Documentation/technical
Jonathan Tan 9c1e657a8f fetch: teach independent negotiation (no packfile)
Currently, the packfile negotiation step within a Git fetch cannot be
done independent of sending the packfile, even though there is at least
one application wherein this is useful. Therefore, make it possible for
this negotiation step to be done independently. A subsequent commit will
use this for one such application - push negotiation.

This feature is for protocol v2 only. (An implementation for protocol v0
would require a separate implementation in the fetch, transport, and
transport helper code.)

In the protocol, the main hindrance towards independent negotiation is
that the server can unilaterally decide to send the packfile. This is
solved by a "wait-for-done" argument: the server will then wait for the
client to say "done". In practice, the client will never say it; instead
it will cease requests once it is satisfied.

In the client, the main change lies in the transport and transport
helper code. fetch_refs_via_pack() performs everything needed - protocol
version and capability checks, and the negotiation itself.

There are 2 code paths that do not go through fetch_refs_via_pack() that
needed to be individually excluded: the bundle transport (excluded
through requiring smart_options, which the bundle transport doesn't
support) and transport helpers that do not support takeover. If or when
we support independent negotiation for protocol v0, we will need to
modify these 2 code paths to support it. But for now, report failure if
independent negotiation is requested in these cases.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-05-05 10:41:29 +09:00
..
.gitignore
api-error-handling.txt
api-index-skel.txt
api-index.sh
api-merge.txt merge: move doc to ll-merge.h 2019-11-18 15:21:28 +09:00
api-parse-options.txt strvec: update documention to avoid argv_array 2020-07-28 15:02:18 -07:00
api-simple-ipc.txt simple-ipc: design documentation for new IPC mechanism 2021-03-15 14:32:50 -07:00
api-trace2.txt usage: add trace2 entry upon warning() 2020-11-24 17:39:38 -08:00
bitmap-format.txt
bundle-format.txt bundle: add new version for use with SHA-256 2020-07-30 09:16:48 -07:00
chunk-format.txt chunk-format: add technical docs 2021-02-18 13:38:16 -08:00
commit-graph-format.txt chunk-format: add technical docs 2021-02-18 13:38:16 -08:00
commit-graph.txt doc: add corrected commit date info 2021-01-18 16:21:18 -08:00
directory-rename-detection.txt t6423: more involved rules for renaming directories into each other 2020-10-16 12:29:28 -07:00
hash-function-transition.txt doc: use https links 2021-02-05 11:57:10 -08:00
http-protocol.txt http-protocol.txt: document SHA-256 "want"/"have" format 2020-08-17 10:35:12 -07:00
index-format.txt Merge branch 'dl/doc-config-camelcase' 2021-02-25 16:43:32 -08:00
long-running-process-protocol.txt
multi-pack-index.txt midx: allow marking a pack as preferred 2021-04-01 13:07:37 -07:00
pack-format.txt Documentation/technical: describe multi-pack reverse indexes 2021-04-01 13:07:37 -07:00
pack-heuristics.txt
pack-protocol.txt Merge branch 'jx/proc-receive-hook' 2020-09-25 15:25:39 -07:00
packfile-uri.txt Doc: clarify contents of packfile sent as URI 2021-01-20 19:06:50 -08:00
partial-clone.txt promisor-remote: lazy-fetch objects in subprocess 2020-08-18 16:46:53 -07:00
protocol-capabilities.txt docs: new capability to advertise session IDs 2020-11-11 18:26:52 -08:00
protocol-common.txt Merge branch 'ls/packet-line-protocol-doc-fix' 2016-08-31 10:03:51 -07:00
protocol-v2.txt fetch: teach independent negotiation (no packfile) 2021-05-05 10:41:29 +09:00
racy-git.txt doc: replace LKML link with lore.kernel.org 2019-12-04 10:26:52 -08:00
reftable.txt doc/reftable: document how to handle windows 2021-02-23 10:01:21 -08:00
repository-version.txt
rerere.txt Documentation: fix a bunch of typos, both old and new 2019-11-07 13:42:00 +09:00
send-pack-pipeline.txt
shallow.txt shallow.txt: document SHA-256 shallow format 2020-08-17 10:35:13 -07:00
signature-format.txt
trivial-merge.txt