Documentation / technical / pack-protocol.txton commit Merge branch 'th/remote-usage' into maint (e24bd95)
   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.