path: root/Documentation/technical
diff options
authorJunio C Hamano <>2017-04-24 05:07:53 (GMT)
committerJunio C Hamano <>2017-04-24 05:07:53 (GMT)
commitd2617eb98440a43072c49e416e0986ef3231faa4 (patch)
treec2159b91bf34ad5ec9b3d1d7c58bdf3e06fa104b /Documentation/technical
parentb30cf6761a08ff10fe3f8295796399d8630fadb0 (diff)
parent8e2c7bef034f0712c6db776974ee4b40f1150a56 (diff)
Merge branch 'jt/fetch-pack-error-reporting'
"git fetch-pack" was not prepared to accept ERR packet that the upload-pack can send with a human-readable error message. It showed the packet contents with ERR prefix, so there was no data loss, but it was redundant to say "ERR" in an error message. * jt/fetch-pack-error-reporting: fetch-pack: show clearer error message upon ERR
Diffstat (limited to 'Documentation/technical')
1 files changed, 6 insertions, 1 deletions
diff --git a/Documentation/technical/pack-protocol.txt b/Documentation/technical/pack-protocol.txt
index c59ac99..5b0ba3e 100644
--- a/Documentation/technical/pack-protocol.txt
+++ b/Documentation/technical/pack-protocol.txt
@@ -351,14 +351,19 @@ ACK after 'done' if there is at least one common base and multi_ack or
multi_ack_detailed is enabled. The server always sends NAK after 'done'
if there is no common base found.
+Instead of 'ACK' or 'NAK', the server may send an error message (for
+example, if it does not recognize an object in a 'want' line received
+from the client).
Then the server will start sending its packfile data.
- server-response = *ack_multi ack / nak
+ server-response = *ack_multi ack / nak / error-line
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):