зеркало из https://github.com/microsoft/git.git
39 строки
830 B
Plaintext
39 строки
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.
|