Mercurial > hg-stable
view tests/test-absorb-strip.t @ 44180:58c74a517a00 stable
rust-dirstatemap: cache non normal and other parent set
Performance of `hg update` was significantly worse since the introduction of
the Rust `dirstatemap`. This regression was noticed by Valentin Gatien-Baron
when working on a large repository, as it goes unnoticed for smaller
repositories like Mercurial itself.
This fix introduces the same getter/setter mechanism at `hg-core` level as
for `set/get_dirs`.
While this technique is, as previously discussed, quite suboptimal, it fixes an
important enough problem. Refactoring `hg-core` to use the typestate
pattern could be a good approach to improving code quality in a future patch.
This is a graft of stable of 83b2b829c94e
Differential Revision: https://phab.mercurial-scm.org/D8110
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 30 Jan 2020 14:57:02 +0100 |
parents | c91321e86071 |
children |
line wrap: on
line source
Do not strip innocent children. See https://bitbucket.org/facebook/hg-experimental/issues/6/hg-absorb-merges-diverged-commits $ cat >> $HGRCPATH << EOF > [extensions] > absorb= > drawdag=$TESTDIR/drawdag.py > EOF $ hg init $ hg debugdrawdag << EOF > E > | > D F > |/ > C > | > B > | > A > EOF $ hg up E -q $ echo 1 >> B $ echo 2 >> D $ hg absorb -a warning: orphaned descendants detected, not stripping 112478962961, 26805aba1e60 saved backup bundle to * (glob) 2 of 2 chunk(s) applied $ hg log -G -T '{desc}' @ E | o D | o C | o B | | o F | | | o C | | | o B |/ o A