7d6aec409d618023db5039a6ae797bb984d63653
[git/git.git] / Documentation / pack-protocol.txt
1 There are two Pack push-pull protocols.
2
3 upload-pack (S) | fetch/clone-pack (C) protocol:
4
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.
25
26 send-pack | receive-pack protocol.
27
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.