##// END OF EJS Templates
revset: make descendants() lazier...
revset: make descendants() lazier Previously descendants() would force the provided subset to become a set. In the case of revsets like '(%ld::) - (%ld)' (as used by histedit) this would force the '- (%ld)' set to be evaluated, which produced a set containing every commit in the repo (except %ld). This takes 0.6s on large repos. This changes descendants to trust the subset to implement __contains__ efficiently, which improves the above revset to 0.16s. Shaving 0.4 seconds off of histedit. revset #27: (20000::) - (20000) 0) obsolete feature not enabled but 54243 markers found! ! wall 0.023640 comb 0.020000 user 0.020000 sys 0.000000 (best of 100) 1) obsolete feature not enabled but 54243 markers found! ! wall 0.019589 comb 0.020000 user 0.020000 sys 0.000000 (best of 100) This commit removes the final revset related perf hotspot from histedit. Combined with the previous two patches, they shave a little over 3 seconds off histedit on large repos.

File last commit:

r22046:7a9cbb31 default
r22449:da05fe01 default
Show More
test-hup.t
38 lines | 903 B | text/troff | Tads3Lexer
#require serve fifo
Test hangup signal in the middle of transaction
$ hg init
$ mkfifo p
$ hg serve --stdio < p 1>out 2>&1 &
$ P=$!
Do test while holding fifo open
$ (
> echo lock
> echo addchangegroup
> start=`date +%s`
> # 10 second seems much enough to let the server catch up
> deadline=`expr $start + 10`
> while [ ! -s .hg/store/journal ]; do
> sleep 0;
> if [ `date +%s` -gt $deadline ]; then
> echo "transaction did not start after 10 seconds" >&2;
> exit 1;
> fi
> done
> kill -HUP $P
> ) > p
$ wait
$ cat out
0
0
adding changesets
transaction abort!
rollback completed
killed!
$ echo .hg/* .hg/store/*
.hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a .hg/store/journal.phaseroots