##// END OF EJS Templates
generaldelta: initialize basecache properly...
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.

File last commit:

r19764:e92650e3 stable
r19764:e92650e3 stable
Show More
test-generaldelta.t
23 lines | 784 B | text/troff | Tads3Lexer
Check whether size of generaldelta revlog is not bigger than its
regular equivalent. Test would fail if generaldelta was naive
implementation of parentdelta: third manifest revision would be fully
inserted due to big distance from its paren revision (zero).
$ hg init repo
$ cd repo
$ echo foo > foo
$ echo bar > bar
$ hg commit -q -Am boo
$ hg clone --pull . ../gdrepo -q --config format.generaldelta=yes
$ for r in 1 2 3; do
> echo $r > foo
> hg commit -q -m $r
> hg up -q -r 0
> hg pull . -q -r $r -R ../gdrepo
> done
$ cd ..
$ regsize=`du -s -b repo/.hg/store/00manifest.i | cut -f 1`
$ gdsize=`du -s -b gdrepo/.hg/store/00manifest.i | cut -f 1`
$ if ((regsize < gdsize)); then
> echo 'generaldelta increased size of a revlog!'
> fi