view tests/test-inotify-dirty-dirstate.t @ 18625:2cbd27f4f3c4

dirstate: walk returns None for files that have a symlink in their path Previously dirstate.walk would return a stat object for files in the dmap that have a symlink to a directory in their path. Now it will return None to indicate that they are no longer considered part of the repository. This currently only affects walks that traverse the entire directory tree (ex: hg status) and not walks that only list the contents of the dmap (ex: hg diff). In a situation like this: mkdir foo && touch foo/a && hg commit -Am "a" mv foo bar ln -s bar foo 'hg status' will now show '! foo/a', whereas before it incorrectly considered 'foo/a' to be unchanged. In addition to making 'hg status' report the correct information, this will allow callers to dirstate.walk to not have to detect symlinks themselves, which can be very expensive.
author Durham Goode <durham@fb.com>
date Mon, 04 Feb 2013 14:27:15 -0800
parents f2719b387380
children
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

  $ cd ..