1Pack transfer protocols 2======================= 3 4There are two Pack push-pull protocols. 5 6upload-pack (S) | fetch/clone-pack (C) protocol: 7 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. 28 29send-pack | receive-pack protocol. 30 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.