Mercurial > hg
view tests/test-remotefilelog-bundle2-legacy.t @ 44861:065421e12248
files: speed up `hg files` when no flags change display
It's not the first time I see slowness from this command slow down
tools built on top of hg.
The majority of the time is spent merely printing the result before
this change, which is clearly not how it should be (especially since
the computation of the result also looks slow).
Running `hg files` in mozilla-central:
parent revision: 1,260s
this commit: 0,683s
this commit without batching ui.write: 0,931s
this commit replacing the body of the loop with `pass`: 0,566s
This looks like a prime candidate for a rust fast path, but until
then, it seems reasonable to optimize the python.
Differential Revision: https://phab.mercurial-scm.org/D8586
author | Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> |
---|---|
date | Tue, 26 May 2020 08:15:09 -0400 |
parents | 0800d9e6e216 |
children | 68b7faeb6ef3 |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" generaldelta to generaldelta interactions with bundle2 but legacy clients without changegroup2 support $ cat > testcg2.py << EOF > import sys > from mercurial import changegroup, registrar, util > cmdtable = {} > command = registrar.command(cmdtable) > @command('testcg2', norepo=True) > def testcg2(ui): > if not util.safehasattr(changegroup, 'cg2packer'): > sys.exit(80) > EOF $ cat >> $HGRCPATH << EOF > [extensions] > testcg2 = $TESTTMP/testcg2.py > EOF $ hg testcg2 || exit 80 $ cat > disablecg2.py << EOF > from mercurial import changegroup, error, util > deleted = False > def reposetup(ui, repo): > global deleted > if deleted: > return > packermap = changegroup._packermap > # protect against future changes > if len(packermap) != 3: > raise error.Abort('packermap has %d versions, expected 3!' % len(packermap)) > for k in ['01', '02', '03']: > if not packermap.get(k): > raise error.Abort("packermap doesn't have key '%s'!" % k) > > del packermap['02'] > deleted = True > EOF $ hg init master $ grep generaldelta master/.hg/requires generaldelta $ cd master preferuncompressed = False so that we can make both generaldelta and non-generaldelta clones $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > [experimental] > bundle2-exp = True > [server] > preferuncompressed = False > EOF $ echo x > x $ hg commit -qAm x $ cd .. $ hgcloneshallow ssh://user@dummy/master shallow -q --pull --config experimental.bundle2-exp=True 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) $ cd shallow $ cat >> .hg/hgrc << EOF > [extensions] > disablecg2 = $TESTTMP/disablecg2.py > EOF $ cd ../master $ echo y > y $ hg commit -qAm y $ cd ../shallow $ hg pull -u pulling from ssh://user@dummy/master searching for changes adding changesets adding manifests adding file changes added 1 changesets with 0 changes to 0 files new changesets d34c38483be9 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) $ echo a > a $ hg commit -qAm a $ hg push pushing to ssh://user@dummy/master searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 1 changes to 1 files