I agree that getIncludedDirs doesn't work as expected (if at all). I
wrote a custom task and I had to take the parent of each matching file
to see what directories were matched.
> -----Original Message-----
> From: Glenn McAllister [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, March 07, 2001 2:37 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Bug with <delete includeEmptyDirs> ?
>
>
> Moving this discussion over from ant-user. Involves the bug that
> <delete includeEmptyDirs="yes"> ... </delete> only deletes empty leaf
> directories, and none of the intermediate dirs.
>
> --
>
> KC Baltz wrote:
>
> > Great, because this is a feature we could really use.
>
> I finally got a chance to look at the code. It seems that my testcase
> was too simple - the directory structure wasn't deep enough.
>
> Here's a description of the problem. I have the following directory
> structure:
>
> a/
> b/
> c/
> d
> e
>
> Lets say I have files in a and a/b/c. So, when I do this:
>
> <delete includeEmptyDirs="yes">
> <fileset dir="a" />
> </delete>
>
> which effectively says "Start at directory a, delete all
> files (ignoring
> those matching the default exclude patterns), and then delete
> all empty
> subdirectories." What actually happens is "Start at
> directory a, delete
> all files, and then delete empty leaf directories." So when we are
> done, the structure looks like
>
> a/
> b/
> c
>
> When I'm chosing what directories to delete, I'm using the
> DirectoryScanner.getIncludedDirs method. The assumption is that since
> we are using a fileset, we should only try to delete matching empty
> directories. The funny thing is, if the match pattern is "**" (which
> seems to be a pretty common case), only leaf directories are
> returned as
> a match. Now, I've had this discussion before with other
> committers and
> been told that, in the general case, if the directory does
> not match the
> pattern it shouldn't be included. Well, if thats the case,
> why wouldn't
> it match all the subdirectories with a "**" include pattern? Why does
> it only match the leaf directories?
>
> Unless I hear otherwise (i.e., get -1'ed) I'm going to see
> about either
> changing DirectoryScanner to properly collect ALL directories
> and return
> them with getIncludedDirs, or create a new method
> getAllIncludedDirs to
> return all of them. My preference is the former, but it may
> break some
> existing behaviour. Any opinions?
>
> Glenn McAllister
>