[issue621] purge: issues with statwalk() and ignored directories

Emanuele Aina mercurial-bugs at selenic.com
Sat Jul 7 07:09:58 CDT 2007

New submission from Emanuele Aina <faina.mail at tiscali.it>:

dirstate.statwalk() returns tracked files in ignored directories as missing and
dirstate.status() goes a great length to check if those are still there.

What about if statwalk, when encountering an ignored directory, would scan the
tracked files list yielding those under the ignored directory?

The current behavior invalidates the logic in the purge extension used to avoid
problems on name-mangling filesystems (e.g. FAT), as it checks for the existance
of missing files and abort if one of them is still reachable.

You can experience the problem with this testcase:

hg init repo
cd repo
echo 'ignore' > .hgignore
mkdir ignored_dir
touch ignored_dir/foo
hg add ignored_dir/foo
hg debugwalk
hg purge -p

debugwalk reports ignored_dir/foo as missing, and purge fails as it is still

messages: 3458
nosy: em
priority: bug
status: unread
title: purge: issues with statwalk() and ignored directories

Mercurial issue tracker <mercurial-bugs at selenic.com>

More information about the Mercurial-devel mailing list