inotify: do not rely on stat(.hg/dirstate) to invalidate our dirstate
stat() is not reliable when several events happen quickly. Which means
that if two hg actions occur in the same second, stat() result will not
reflect the second change. And only _one_ invalidate() call was done.
Also ignore the events that occur when wlock is held, since wlock release
will trigger a full rescan anyway.
Fixes 17 run-tests.py --inotify tests.
% commit date test
abort: empty commit message
abort: impossible time zone offset: 4444444
abort: invalid date: '1\t15.1'
abort: invalid date: 'foo bar'
abort: date exceeds 32 bits: 111111111111
% commit added file that has been deleted
nothing changed
abort: bar: file not found!
adding dir/file
dir/file
committed changeset 2:d2a76177cb42
adding dir.file
abort: dir: no match under directory!
abort: bleh: no match under directory!
abort: dir2: no match under directory!
dir/file
committed changeset 3:1cd62a2d8db5
abort: does-not-exist: No such file or directory
abort: baz: file not tracked!
abort: quux: file not tracked!
dir/file
committed changeset 4:49176991390e
% partial subdir commit test
adding bar/bar
adding foo/foo
% subdir log 1
changeset: 0:6ef3cb06bb80
user: test
date: Mon Jan 12 13:46:40 1970 +0000
files: foo/foo
description:
commit-subdir-1
% subdir log 2
changeset: 1:f2e51572cf5a
tag: tip
user: test
date: Mon Jan 12 13:46:41 1970 +0000
files: bar/bar
description:
commit-subdir-2
% full log
changeset: 1:f2e51572cf5a
tag: tip
user: test
date: Mon Jan 12 13:46:41 1970 +0000
files: bar/bar
description:
commit-subdir-2
changeset: 0:6ef3cb06bb80
user: test
date: Mon Jan 12 13:46:40 1970 +0000
files: foo/foo
description:
commit-subdir-1
% dot and subdir commit test
% full log
changeset: 1:d9180e04fa8a
tag: tip
user: test
date: Sat Jan 24 03:33:20 1970 +0000
files: foo/plain-file
description:
commit-foo-dot
changeset: 0:80b572aaf098
user: test
date: Mon Jan 12 13:46:40 1970 +0000
files: foo/plain-file
description:
commit-foo-subdir
% subdir log
changeset: 1:d9180e04fa8a
tag: tip
user: test
date: Sat Jan 24 03:33:20 1970 +0000
summary: commit-foo-dot
changeset: 0:80b572aaf098
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: commit-foo-subdir
adding a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
merging a
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
% should fail because we are specifying a file name
abort: cannot partially commit a merge (do not specify files or patterns)
% should fail because we are specifying a pattern
abort: cannot partially commit a merge (do not specify files or patterns)
% should succeed
% test commit message content
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'default'
HG: added added
HG: changed changed
HG: removed removed
abort: empty commit message