Using the code below, you can patch the <sync> task to preserve arbitrary
files. You'll have to code and compile it yourself though. --DD
<bm:lsync2 todir="jar">
<preservedfiles includes="**/CVS/**" />
<fileset dir="${sync.win32.from}">
<include name="com_lgc_foo_devkit.jar" />
<include name="com_lgc_foo_dataTypes.jar" />
<include name="com_lgc_bar_devkit.jar" />
</fileset>
</bm:lsync2>
/** The <em>untouchable</em> files: the ones not to delete. */
private PreservedFiles _untouchables;
Between Pass#1 and Pass#2, in execute():
// Gather the untouchable files, if any (yes, we're scanning
// the sync'd dir twice here and in removeOrphanFiles...)
if (_untouchables != null) {
_untouchables.setTargetDir(_todir);
DirectoryScanner scanner = _untouchables.getDirectoryScanner(prj);
String[] preserved = scanner.getIncludedFiles();
for (int i = 0; i < preserved.length; ++i) {
String name = preserved[i];
File untouchable = new File(_todir, name);
target2source.put(untouchable, _todir);
}
final int preservedCount = target2source.size() - targetCount;
log("(preversing " + preservedCount + " file(s))",
logLevel(preservedCount));
}
/**
* Adds a pseudo-fileset of files not to remove.
*
* @param untouchables the <em>do not remove</em> files.
* Like a fileset, except the dir attribute is implicit.
*/
public void addPreservedFiles(PreservedFiles untouchables) {
if (_untouchables != null) {
throw new BuildException("Too many <preservedfiles> elements: >1!");
}
_untouchables = untouchables;
}
/**
* A pseudo-fileset for files that should not be removed from the
* sync'd directory, even though they don't have an equivalent source.
*/
public static class PreservedFiles extends AbstractFileSet {
/**
* Instantiates a new preserved file pseudo-fileset.
* <p>
* Sets "defaultexcludes" to <code>false</code>
* (instead of <code>true</code>) by default.
*/
public PreservedFiles() {
super();
setDefaultexcludes(false);
}
/**
* Always throws an exception, since disallowed.
*
* @param dir ignored
* @throws BuildException always
*/
public void setDir(File dir) throws BuildException {
throw new BuildException("Cannot set directory. Sync'd directory
used!");
}
/**
* Sets the implicit fileset directory.
*
* @param dir the sync'd directory.
*/
private void setTargetDir(File dir) throws BuildException {
super.setDir(dir);
}
} // END static class PreservedFiles
> -----Original Message-----
> From: Mark Benussi [mailto:[EMAIL PROTECTED]
> Sent: Thursday, August 18, 2005 7:08 AM
> To: 'Ant Users List'
> Subject: RE: Sync removing cvs information in target directory
>
> Great idea!
>
> -----Original Message-----
> From: Jeffrey E Care [mailto:[EMAIL PROTECTED]
> Sent: 18 August 2005 12:25
> To: Ant Users List
> Subject: Re: Sync removing cvs information in target directory
>
> I move the CVS directories to a temporary holding area, perform the sync,
> then move them back. You'll also need to fiddle with the default excludes
> to make this work.
>
> --
> Jeffrey E. Care ([EMAIL PROTECTED])
> WebSphere v7 Release Engineer
> WebSphere Build Tooling Lead (Project Mantis)
>
>
> "Mark Benussi" <[EMAIL PROTECTED]> wrote on 08/18/2005 06:44:03 AM:
>
> > Hi Guys,
> >
> >
> >
> > Any ideas how I could use the sync task but not remove any directories
> in
> > the target that are named CVS. Basically my CVS information is getting
> wiped
> > and this is causing problems.
> >
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]