Josh Sugnet wrote:

> Nico,
>     thank you for the clarification, but I dont think I was clear enough in my
> original post on what I am trying to do.   Abetter examples is the following.
> Suppose I have a directory named src in which I have a large source module
> checked out from a CVS repository.  At every directory level in the src
> directory tree, there is a CVS directory.  In shell, removing all these CVS
> direcoties from the source tree without removing any of the source files and
> directories can be done easily by doing a find and piping it to rm, something
> like `find src -name "CVS"|xargs rm -rf`.    The src module is left behind
> intact, only all of the CVS directories are removed.  What is the best way to
> do this same operation in ant?  It seems like the fileset element only allows
> you to specify patterns of files and not directories.   Any info is
> apprecieated.

What you are trying to do isn't supported in 1.2.  It is in 1.3alpha as of
yesterday.

Lets assume you have your source tree rooted in ${src.dir}.  So, to get rid of
all the files in the CVS directories you would do the following:

<delete>
  <fileset dir="${src.dir}" usedefaultexcludes="no">
    <include name="**/CVS/**" />
  </fileset>
</delete>

The usedefaultexcludes attribute controls whether the set of things to exclude by
default are included when you create the fileset.  This comes from a lot of
source trees having CVS directories that we just never want to copy.  However,
there is the odd time when you want *everything*.  In that case, use the
usedefaultexcludes attribute.

Unfortunately, it leaves the CVS directories behind.  In the current CVS version
of Ant, you could say

<delete includeEmptyDirs="yes">
  <fileset dir="${src.dir}" usedefaultexcludes="no">
    <include name="**/CVS/**" />
  </fileset>
</delete>

and that would do it.

The only other way to get the result you want with Ant 1.2 is to do the
following:

<copy todir="${tmp.dir}">
  <fileset dir="${src.dir}" />        <!-- includes everything by default EXCEPT
cvs stuff -->
</copy>

<delete dir="${src.dir}" />

<move todir="${src.dir}">
  <fileset dir="${tmp.dir}" />
</move>

Not nice, but it works.

Glenn McAllister

Reply via email to