view tests/bzr-definitions @ 17970:0b03454abae7

ancestor: faster algorithm for difference of ancestor sets One of the major reasons rebase is slow in large repositories is the computation of the detach set: the set of ancestors of the changesets to rebase not in the destination parent. This is currently done via a revset that does two walks all the way to the root of the DAG. Instead of doing that, to find ancestors of a set <revs> not in another set <common> we walk up the tree in reverse revision number order, maintaining sets of nodes visited from <revs>, <common> or both. For the common case where the sets are close both topologically and in revision number (relative to repository size), this has been found to speed up rebase by around 15-20%. When the nodes are farther apart and the DAG is highly branching, it is harder to say which would win. Here's how long computing the detach set takes in a linear repository with over 400000 changesets, rebasing near tip: Rebasing across 4 changesets Revset method: 2.2s New algorithm: 0.00015s Rebasing across 250 changesets Revset method: 2.2s New algorithm: 0.00069s Rebasing across 10000 changesets Revset method: 2.4s New algorithm: 0.019s
author Siddharth Agarwal <sid0@fb.com>
date Mon, 26 Nov 2012 11:46:51 -0800
parents f84dda152a55
children aa9385f983fa
line wrap: on
line source

# this file holds the definitions that are used in various bzr tests

"$TESTDIR/hghave" bzr || exit 80

TERM=dumb; export TERM
echo '[extensions]' >> $HGRCPATH
echo 'convert = ' >> $HGRCPATH
echo 'hgext.graphlog = ' >> $HGRCPATH

glog()
{
    hg glog --template '{rev}@{branch} "{desc|firstline}" files: {files}\n' "$@"
}

manifest()
{
    echo "% manifest of $2"
    hg -R $1 manifest -v -r $2
}