view tests/test-extra-filelog-entry.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 ec5886db9dc6
children b87acfda5268
line wrap: on
line source

Issue351: mq: qrefresh can create extra revlog entry

  $ echo "[extensions]" >> $HGRCPATH
  $ echo "mq=" >> $HGRCPATH

  $ hg init
  $ hg qinit

  $ echo b > b
  $ hg ci -A -m foo
  adding b

  $ echo cc > b
  $ hg qnew -f foo.diff
  $ echo b > b
  $ hg qrefresh

  $ hg debugindex b
     rev    offset  length   base linkrev nodeid       p1           p2
       0         0       3      0       0 1e88685f5dde 000000000000 000000000000