annotate tests/test-generaldelta.t @ 19764:e92650e39f1c stable

generaldelta: initialize basecache properly Previously basecache was incorrectly initialized before adding the first revision from a changegroup. Basecache value influences when full revisions are stored in revlog (when using generaldelta). As a result it was possible to generate a generaldelta-revlog that could be bigger by arbitrary factor than its non-generaldelta equivalent.
author Wojciech Lopata <lopek@fb.com>
date Fri, 20 Sep 2013 10:45:51 -0700
parents
children 4d2bea6604d3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19764
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
1 Check whether size of generaldelta revlog is not bigger than its
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
2 regular equivalent. Test would fail if generaldelta was naive
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
3 implementation of parentdelta: third manifest revision would be fully
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
4 inserted due to big distance from its paren revision (zero).
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
5
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
6 $ hg init repo
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
7 $ cd repo
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
8 $ echo foo > foo
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
9 $ echo bar > bar
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
10 $ hg commit -q -Am boo
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
11 $ hg clone --pull . ../gdrepo -q --config format.generaldelta=yes
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
12 $ for r in 1 2 3; do
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
13 > echo $r > foo
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
14 > hg commit -q -m $r
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
15 > hg up -q -r 0
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
16 > hg pull . -q -r $r -R ../gdrepo
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
17 > done
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
18 $ cd ..
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
19 $ regsize=`du -s -b repo/.hg/store/00manifest.i | cut -f 1`
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
20 $ gdsize=`du -s -b gdrepo/.hg/store/00manifest.i | cut -f 1`
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
21 $ if ((regsize < gdsize)); then
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
22 > echo 'generaldelta increased size of a revlog!'
e92650e39f1c generaldelta: initialize basecache properly
Wojciech Lopata <lopek@fb.com>
parents:
diff changeset
23 > fi