1 Pack transfer protocols
2 =======================
4 There are two Pack push-pull protocols.
6 upload-pack (S) | fetch/clone-pack (C) protocol:
8 # Tell the puller what commits we have and what their names are
9 S: SHA1 name
10 S: ...
11 S: SHA1 name
12 S: # flush -- it's your turn
13 # Tell the pusher what commits we want, and what we have
14 C: want name
15 C: ..
16 C: want name
17 C: have SHA1
18 C: have SHA1
19 C: ...
20 C: # flush -- occasionally ask "had enough?"
21 S: NAK
22 C: have SHA1
23 C: ...
24 C: have SHA1
25 S: ACK
26 C: done
27 S: XXXXXXX -- packfile contents.
29 send-pack | receive-pack protocol.
31 # Tell the pusher what commits we have and what their names are
32 C: SHA1 name
33 C: ...
34 C: SHA1 name
35 C: # flush -- it's your turn
36 # Tell the puller what the pusher has
37 S: old-SHA1 new-SHA1 name
38 S: old-SHA1 new-SHA1 name
39 S: ...
40 S: # flush -- done with the list
41 S: XXXXXXX --- packfile contents.