Mercurial > hg
view contrib/base-revsets.txt @ 39665:c73c7653dfb9
narrow: use diffmatcher to send only new filelogs in non-ellipses widening
Before this patch, when we widen a non-ellipses narrow clone, we downloads all
the filelogs matching the resulting new matcher. This is same as the ellipses
case but can be improved because, we don't pull new csets in non-ellipses cases,
we can only download the new added files instead of downloading all the files
which matches the new matcher.
So, we only download files which matches the new matcher but does not matches
the old matcher. There exists a match.differencematcher() which is used here.
This will lead to significant amount of speedup in extending a non-ellipses
narrow copy on large repos because we will download and process only the new
required filelogs.
The tests changes demonstrate that we are downloading now less files.
Thanks to Augie for pointing that functionality of differencematcher exists in
core.
Differential Revision: https://phab.mercurial-scm.org/D4614
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Mon, 17 Sep 2018 15:55:18 +0300 |
parents | 70a4289896b0 |
children | a4483e380c3e |
line wrap: on
line source
# Base Revsets to be used with revsetbenchmarks.py script # # The goal of this file is to gather a limited amount of revsets that allow a # good coverage of the internal revsets mechanisms. Revsets included should not # be selected for their individual implementation, but for what they reveal of # the internal implementation of smartsets classes (and their interactions). # # Use and update this file when you change internal implementation of these # smartsets classes. Please include a comment explaining what each of your # addition is testing. Also check if your changes to the smartset class makes # some of the tests inadequate and replace them with a new one testing the same # behavior. # # If you want to benchmark revsets predicate itself, check 'all-revsets.txt'. # # The current content of this file is currently likely not reaching this goal # entirely, feel free, to audit its content and comment on each revset to # highlight what internal mechanisms they test. all() draft() ::tip draft() and ::tip ::tip and draft() 0::tip roots(0::tip) author(lmoscovicz) author(mpm) author(lmoscovicz) or author(mpm) author(mpm) or author(lmoscovicz) tip:0 0:: # those two `roots(...)` inputs are close to what phase movement use. roots((tip~100::) - (tip~100::tip)) roots((0::) - (0::tip)) 42:68 and roots(42:tip) ::p1(p1(tip)):: public() :10000 and public() draft() :10000 and draft() roots((0:tip)::) (not public() - obsolete()) (_intlist('20000\x0020001')) and merge() parents(20000) (20000::) - (20000) # The one below is used by rebase (children(ancestor(tip~5, tip)) and ::(tip~5)):: heads(commonancestors(last(head(), 2)))