Merge branch 'jt/fetch-v2-sideband'
"git fetch" and "git upload-pack" learned to send all exchange over the sideband channel while talking the v2 protocol. * jt/fetch-v2-sideband: tests: define GIT_TEST_SIDEBAND_ALL {fetch,upload}-pack: sideband v2 fetch response sideband: reverse its dependency on pkt-line pkt-line: introduce struct packet_writer pack-protocol.txt: accept error packets in any context Use packet_reader instead of packet_read_line
This commit is contained in:
@ -22,6 +22,16 @@ protocol-common.txt. When the grammar indicate `PKT-LINE(...)`, unless
|
||||
otherwise noted the usual pkt-line LF rules apply: the sender SHOULD
|
||||
include a LF, but the receiver MUST NOT complain if it is not present.
|
||||
|
||||
An error packet is a special pkt-line that contains an error string.
|
||||
|
||||
----
|
||||
error-line = PKT-LINE("ERR" SP explanation-text)
|
||||
----
|
||||
|
||||
Throughout the protocol, where `PKT-LINE(...)` is expected, an error packet MAY
|
||||
be sent. Once this packet is sent by a client or a server, the data transfer
|
||||
process defined in this protocol is terminated.
|
||||
|
||||
Transports
|
||||
----------
|
||||
There are three transports over which the packfile protocol is
|
||||
@ -89,13 +99,6 @@ process on the server side over the Git protocol is this:
|
||||
"0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" |
|
||||
nc -v example.com 9418
|
||||
|
||||
If the server refuses the request for some reasons, it could abort
|
||||
gracefully with an error message.
|
||||
|
||||
----
|
||||
error-line = PKT-LINE("ERR" SP explanation-text)
|
||||
----
|
||||
|
||||
|
||||
SSH Transport
|
||||
-------------
|
||||
@ -398,12 +401,11 @@ from the client).
|
||||
Then the server will start sending its packfile data.
|
||||
|
||||
----
|
||||
server-response = *ack_multi ack / nak / error-line
|
||||
server-response = *ack_multi ack / nak
|
||||
ack_multi = PKT-LINE("ACK" SP obj-id ack_status)
|
||||
ack_status = "continue" / "common" / "ready"
|
||||
ack = PKT-LINE("ACK" SP obj-id)
|
||||
nak = PKT-LINE("NAK")
|
||||
error-line = PKT-LINE("ERR" SP explanation-text)
|
||||
----
|
||||
|
||||
A simple clone may look like this (with no 'have' lines):
|
||||
|
@ -313,6 +313,16 @@ the 'wanted-refs' section in the server's response as explained below.
|
||||
particular ref, where <ref> is the full name of a ref on the
|
||||
server.
|
||||
|
||||
If the 'sideband-all' feature is advertised, the following argument can be
|
||||
included in the client's request:
|
||||
|
||||
sideband-all
|
||||
Instruct the server to send the whole response multiplexed, not just
|
||||
the packfile section. All non-flush and non-delim PKT-LINE in the
|
||||
response (not only in the packfile section) will then start with a byte
|
||||
indicating its sideband (1, 2, or 3), and the server may send "0005\2"
|
||||
(a PKT-LINE of sideband 2 with no payload) as a keepalive packet.
|
||||
|
||||
The response of `fetch` is broken into a number of sections separated by
|
||||
delimiter packets (0001), with each section beginning with its section
|
||||
header.
|
||||
|
Reference in New Issue
Block a user