Skip to content
Snippets Groups Projects
  • Boris Feld's avatar
    b89a7ef29013
    bundle: include advisory rev branch cache part in bundle2 bundle · b89a7ef29013
    Boris Feld authored
    `hg bundle` command producing bundle2 will now include an optional part
    containing the revision-branch cache data.
    
    The data sent are mostly nodes so it is quite compact.  The goal of the
    rev-branch-cache is to speed up branch map computation, especially when the
    branchmap gets invalidated so we send data for all exchanged changesets. In
    addition, computing the relevant heads to send in case of partial pulling would
    be challenging.
    
    As a reminder, the rev branch cache data significantly speed up branch
    computation. Having it around provides a small speedup to pull/clone and much
    higher tolerance to branch map cache invalidation that might happens from later
    commands.
    
    On the Mercurial repository, computing the visible branchmap from scratch move
    from 2.00 seconds to 0.34s (a -83% speedup).
    
    Using this new part, Unbundling the full Mercurial repository moves from 25.736
    seconds to 24.030 seconds (around -7% speedup). The bundle size increase is
    around 3% (from 22.43 MB to 23.13MB)
    
    
    On an half a million revision repository with twenty thousand
    branches, computing the branchmap moves from 75 seconds to 45 second (-40%) if
    the caches is used.
    
    A bundle containing 50 000 changesets in such repository get a 0.5% size
    increase from such part for a -3% unbundling time speedup.
    b89a7ef29013
    History
    bundle: include advisory rev branch cache part in bundle2 bundle
    Boris Feld authored
    `hg bundle` command producing bundle2 will now include an optional part
    containing the revision-branch cache data.
    
    The data sent are mostly nodes so it is quite compact.  The goal of the
    rev-branch-cache is to speed up branch map computation, especially when the
    branchmap gets invalidated so we send data for all exchanged changesets. In
    addition, computing the relevant heads to send in case of partial pulling would
    be challenging.
    
    As a reminder, the rev branch cache data significantly speed up branch
    computation. Having it around provides a small speedup to pull/clone and much
    higher tolerance to branch map cache invalidation that might happens from later
    commands.
    
    On the Mercurial repository, computing the visible branchmap from scratch move
    from 2.00 seconds to 0.34s (a -83% speedup).
    
    Using this new part, Unbundling the full Mercurial repository moves from 25.736
    seconds to 24.030 seconds (around -7% speedup). The bundle size increase is
    around 3% (from 22.43 MB to 23.13MB)
    
    
    On an half a million revision repository with twenty thousand
    branches, computing the branchmap moves from 75 seconds to 45 second (-40%) if
    the caches is used.
    
    A bundle containing 50 000 changesets in such repository get a 0.5% size
    increase from such part for a -3% unbundling time speedup.