mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
This documents the two pack push-pull protocols used by the smart upload-fetch/clone and send/receive commands. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
39 lines
830 B
Plaintext
39 lines
830 B
Plaintext
There are two Pack push-pull protocols.
|
|
|
|
upload-pack (S) | fetch/clone-pack (C) protocol:
|
|
|
|
# Tell the puller what commits we have and what their names are
|
|
S: SHA1 name
|
|
S: ...
|
|
S: SHA1 name
|
|
S: # flush -- it's your turn
|
|
# Tell the pusher what commits we want, and what we have
|
|
C: want name
|
|
C: ..
|
|
C: want name
|
|
C: have SHA1
|
|
C: have SHA1
|
|
C: ...
|
|
C: # flush -- occasionally ask "had enough?"
|
|
S: NAK
|
|
C: have SHA1
|
|
C: ...
|
|
C: have SHA1
|
|
S: ACK
|
|
C: done
|
|
S: XXXXXXX -- packfile contents.
|
|
|
|
send-pack | receive-pack protocol.
|
|
|
|
# Tell the pusher what commits we have and what their names are
|
|
C: SHA1 name
|
|
C: ...
|
|
C: SHA1 name
|
|
C: # flush -- it's your turn
|
|
# Tell the puller what the pusher has
|
|
S: old-SHA1 new-SHA1 name
|
|
S: old-SHA1 new-SHA1 name
|
|
S: ...
|
|
S: # flush -- done with the list
|
|
S: XXXXXXX --- packfile contents.
|