Mercurial > hg
view tests/test-remotefilelog-partial-shallow.t @ 46095:93e09d370003
treemanifest: stop storing full path for each item in manifest._lazydirs
This information is obtainable, if needed, based on the lazydirs key (which is
the entry name) and the manifest's `dir()` method.
### Performance
This is actually both a memory and a performance improvement, but it's likely to
be a very small one in most situations. In the pathological repo I've been using
for testing other performance work I've done recently, this reduced the time for
a rebase operation (rebasing two commits across a public-phase change that
touches a sibling of one of my tracked directories where the common parent is
massive (>>10k entries)):
#### Before
```
Time (mean ± σ): 4.059 s ± 0.121 s [User: 0.9 ms, System: 0.6 ms]
Range (min … max): 3.941 s … 4.352 s 10 runs
```
#### After
```
Time (mean ± σ): 3.707 s ± 0.060 s [User: 0.8 ms, System: 0.8 ms]
Range (min … max): 3.648 s … 3.818 s 10 runs
```
Differential Revision: https://phab.mercurial-scm.org/D9553
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Thu, 03 Dec 2020 14:39:39 -0800 |
parents | 0800d9e6e216 |
children | 84a93fa7ecfd |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" $ hg init master $ cd master $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > EOF $ echo x > foo $ echo y > bar $ hg commit -qAm one $ cd .. # partial shallow clone $ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.includepattern=foo streaming all changes 3 files to transfer, 336 bytes of data transferred 336 bytes in * seconds (*/sec) (glob) searching for changes no changes found $ cat >> shallow/.hg/hgrc <<EOF > [remotefilelog] > cachepath=$PWD/hgcache > debug=True > includepattern=foo > reponame = master > [extensions] > remotefilelog= > EOF $ ls shallow/.hg/store/data bar.i # update partial clone $ cd shallow $ hg update 2 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) $ cat foo x $ cat bar y $ cd .. # pull partial clone $ cd master $ echo a >> foo $ echo b >> bar $ hg commit -qm two $ cd ../shallow $ hg pull 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 a9688f18cb91 (run 'hg update' to get a working copy) $ hg update 2 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) $ cat foo x a $ cat bar y b $ cd ..