Mercurial > hg
view tests/test-inotify-dirty-dirstate.t @ 16365:5d61e007d957
mq: use exact matching in the second dirstate walking for efficiency of 'qnew'
'hg qnew' with pattern/-I/-X creates matching object with them, and
uses it twice for 'dirstate.walk()': via 'repo.status()' and
'repo.commit()'.
this may cause full manifest scan in the second 'dirstate.walk()',
even though mq already knows complete target filenames at the first
'dirstate.walk()'.
this patch creates exact matching object also in this case, and use it
at 'repo.commit()' invocation to avoid full manifest scan in the
second 'dirstate.walk()'.
even though 'inclsubs' is added to 'pats' for original matching
object, it is also passed to exact matching object, because
subrepositories are deleted from result of 'dirstate.walk()' at the
end of it.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Thu, 05 Apr 2012 23:52:06 +0900 |
parents | ffb5c09ba822 |
children | f2719b387380 |
line wrap: on
line source
issues when status queries are issued when dirstate is dirty $ "$TESTDIR/hghave" inotify || exit 80 $ echo "[extensions]" >> $HGRCPATH $ echo "inotify=" >> $HGRCPATH $ echo "fetch=" >> $HGRCPATH issue1810: inotify and fetch $ hg init test; cd test $ hg inserve -d --pid-file=../hg.pid $ cat ../hg.pid >> "$DAEMON_PIDS" $ echo foo > foo $ hg add adding foo $ hg ci -m foo $ cd .. $ hg --config "inotify.pidfile=../hg2.pid" clone test test2 updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cat ../hg2.pid >> "$DAEMON_PIDS" $ cd test2 $ echo bar > bar $ hg add adding bar $ hg ci -m bar $ cd ../test $ echo spam > spam $ hg add adding spam $ hg ci -m spam $ cd ../test2 $ hg st abort, outstanding changes $ hg fetch -q $ hg st $ cd .. issue1719: inotify and mq $ echo "mq=" >> $HGRCPATH $ hg init test-1719 $ cd test-1719 inserve $ hg inserve -d --pid-file=../hg-test-1719.pid $ cat ../hg-test-1719.pid >> "$DAEMON_PIDS" $ echo content > file $ hg add file $ hg qnew -f test.patch $ hg status $ hg qpop popping test.patch patch queue now empty st should not output anything $ hg status $ hg qpush applying test.patch now at: test.patch st should not output anything $ hg status $ hg qrefresh $ hg status