Mercurial > hg
view tests/test-diff-reverse.t @ 16101:20ad8f0512a2 stable
mq: restore _branchtags() fast path (issue3223)
Since a5917346c72e, mq saves the nodeid of the first applied patch to
cache/branchheads, which breaks the optimized cache handling introduced in
fbf8320f25c8. The problem is the revision being committed is appended to
mqrepo.applied after the commit succeeds, which means mqrepo._branchtags()
performs a regular update and write the first applied patch to the branch
cache.
One solution is to set a context variable _committingpatch on the mqrepo while
it is committing a patch and to take it in account when deciding to fast-path
mqrepo._branchtags(). Not really elegant but it works.
The changes to test-mq-caches.t reverse changes introduced by a5917346c72e. The
cache should not have been updated with mq records.
The changes to test-keyword.t are indirectly caused by a5917346c72e.
Reported and analyzed by Yuya Nishihara <yuya@tcha.org>
Notes:
- qpush still makes a slow path _branchtags() call when checking heads. Maybe
this can be optimized.
- be careful when merging this patch in default as secretcommit() was renamed
newcommit() right after the end of the code freeze.
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Tue, 07 Feb 2012 18:47:16 +0100 |
parents | 5a69ea8d65b3 |
children | c586cb50872b |
line wrap: on
line source
$ hg init $ cat > a <<EOF > a > b > c > EOF $ hg ci -Am adda adding a $ cat > a <<EOF > d > e > f > EOF $ hg ci -m moda $ hg diff --reverse -r0 -r1 diff -r 2855cdcfcbb7 -r 8e1805a3cf6e a --- a/a Thu Jan 01 00:00:00 1970 +0000 +++ b/a Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +1,3 @@ -d -e -f +a +b +c $ cat >> a <<EOF > g > h > EOF $ hg diff --reverse --nodates diff -r 2855cdcfcbb7 a --- a/a +++ b/a @@ -1,5 +1,3 @@ d e f -g -h