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