GIT 0.99.9f
[tgit.git] / Documentation / pack-protocol.txt
blob7d6aec409d618023db5039a6ae797bb984d63653
1 There are two Pack push-pull protocols.
3 upload-pack (S) | fetch/clone-pack (C) protocol:
5         # Tell the puller what commits we have and what their names are
6         S: SHA1 name
7         S: ...
8         S: SHA1 name
9         S: # flush -- it's your turn
10         # Tell the pusher what commits we want, and what we have
11         C: want name
12         C: ..
13         C: want name
14         C: have SHA1
15         C: have SHA1
16         C: ...
17         C: # flush -- occasionally ask "had enough?"
18         S: NAK
19         C: have SHA1
20         C: ...
21         C: have SHA1
22         S: ACK
23         C: done
24         S: XXXXXXX -- packfile contents.
26 send-pack | receive-pack protocol.
28         # Tell the pusher what commits we have and what their names are
29         C: SHA1 name
30         C: ...
31         C: SHA1 name
32         C: # flush -- it's your turn
33         # Tell the puller what the pusher has
34         S: old-SHA1 new-SHA1 name
35         S: old-SHA1 new-SHA1 name
36         S: ...
37         S: # flush -- done with the list
38         S: XXXXXXX --- packfile contents.