git push -f documentation
[git/mingw/4msysgit/kblees.git] / Documentation / technical / pack-protocol.txt
blob9cd48b48597f9b7e822fc3d81e0bc556d6631b02
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.