mercurial/help/internals/changegroups.txt
changeset 40047 8e398628a3f2
parent 32139 de86a6872d06
equal deleted inserted replaced
40046:50700a025953 40047:8e398628a3f2
     2 the changelog data, root/flat manifest data, treemanifest data, and
     2 the changelog data, root/flat manifest data, treemanifest data, and
     3 filelogs.
     3 filelogs.
     4 
     4 
     5 There are 3 versions of changegroups: ``1``, ``2``, and ``3``. From a
     5 There are 3 versions of changegroups: ``1``, ``2``, and ``3``. From a
     6 high-level, versions ``1`` and ``2`` are almost exactly the same, with the
     6 high-level, versions ``1`` and ``2`` are almost exactly the same, with the
     7 only difference being an additional item in the *delta header*.  Version
     7 only difference being an additional item in the *delta header*. Version
     8 ``3`` adds support for revlog flags in the *delta header* and optionally
     8 ``3`` adds support for storage flags in the *delta header* and optionally
     9 exchanging treemanifests (enabled by setting an option on the
     9 exchanging treemanifests (enabled by setting an option on the
    10 ``changegroup`` part in the bundle2).
    10 ``changegroup`` part in the bundle2).
    11 
    11 
    12 Changegroups when not exchanging treemanifests consist of 3 logical
    12 Changegroups when not exchanging treemanifests consist of 3 logical
    13 segments::
    13 segments::
   124 changegroup.
   124 changegroup.
   125 
   125 
   126 In version 2 and up, the delta base node is encoded in the entry in the
   126 In version 2 and up, the delta base node is encoded in the entry in the
   127 changegroup. This allows the delta to be expressed against any parent,
   127 changegroup. This allows the delta to be expressed against any parent,
   128 which can result in smaller deltas and more efficient encoding of data.
   128 which can result in smaller deltas and more efficient encoding of data.
       
   129 
       
   130 The *flags* field holds bitwise flags affecting the processing of revision
       
   131 data. The following flags are defined:
       
   132 
       
   133 32768
       
   134    Censored revision. The revision's fulltext has been replaced by censor
       
   135    metadata. May only occur on file revisions.
       
   136 16384
       
   137    Ellipsis revision. Revision hash does not match data (likely due to rewritten
       
   138    parents).
       
   139 8192
       
   140    Externally stored. The revision fulltext contains ``key:value`` ``\n``
       
   141    delimited metadata defining an object stored elsewhere. Used by the LFS
       
   142    extension.
       
   143 
       
   144 For historical reasons, the integer values are identical to revlog version 1
       
   145 per-revision storage flags and correspond to bits being set in this 2-byte
       
   146 field. Bits were allocated starting from the most-significant bit, hence the
       
   147 reverse ordering and allocation of these flags.
   129 
   148 
   130 Changeset Segment
   149 Changeset Segment
   131 =================
   150 =================
   132 
   151 
   133 The *changeset segment* consists of a single *delta group* holding
   152 The *changeset segment* consists of a single *delta group* holding