Documentation / pack-protocol.txton commit ls-tree: further tweaks of the rewrite (e246637)
   1There are two Pack push-pull protocols.
   2
   3upload-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
  26send-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.