(Cc'ing ant-dev for thread continuity.. please don't reply there:)

Incidentally, 'diff -N' is not a general, nor cross-platform, solution
to the problem of how to convey updates.

I'd like to invent one though :) I was thinking along the lines of a
.jar file containing updates, with an Ant script, META-INF/control.xml,
which describes how the contents of the jar must be applied.

Basically, a jar file that knows what to do with itself. Much like an
RPM or .deb file.

These jars are 'applied' to a system by running another Ant script,
which:

 - optionally fetches the jar via a HTTP GET.
 - verifies the jar signature
 - unpacks the jar, and transfers control to META-INF/control.xml,
   which:
   - Ensures that the files to be replaced/patched validate against a
     MD5 checksum (to be sure we're not overwriting modifications)
   - If they do, replace/patch/remove them.
   - Optionally do things like restart Tomcat, if the updates are for a
     website.
 - Control then passes back to the invoking script, which cleans up.


My primary use-case is that of distributing updates to a client-managed
website. Each 'update' consists of new/modified jars, a few JSPs, and
perhaps a web.xml modification. These can't be done via CVS because
they're behind a firewall, and can't be done with 'diff', because
they're on WinNT. Hence the need for a cross-platform mechanism for
applying self-contained updates.


Anyone know of something like this, or a better solution? If anyone's
interested, I have a prototype (without the jar signature verification
or MD5 checksumming), and would be happy to collaborate further in the
development of such a system.


--Jeff


On Thu, Dec 27, 2001 at 05:38:48PM +1100, Jeff Turner wrote:
> On Wed, Dec 26, 2001 at 08:36:15PM -0600, Steve Cohen wrote:
> > What is the best way for someone not a committer to submit a totally new
> > file for the ant CVS repository?  Last time I did this, I just sent it
> > an an attachment with the bug report I'd submitted.  
> > 
> > However, this seems like a kludgey way to go about it.  Ideally, it
> > seems to me, a new file should fit into the CVS patch file the way
> > anything else does.  But of course, since you haven't checked it out,
> > CVS knows nothing about it and cvs diff won't work.  Is there a way to
> > get this into the patches file?  Or is sending it as a separate
> > attachment the only way?
> 
> One way is to:
> 
> a) get the cvsutils scripts from http://www.red-bean.com/cvsutils/.
>    Worth getting anyway. I don't know what I'd do without 'cvsco' :)
> 
> b) Do a 'cvsdo add <file>', which modifies CVS/Entries to mark the file
> as new (without contacting the server).
> 
> c) Generate the diff with 'cvs -RuN' (Recursion, unified, New files).
> 'man diff' says:
> 
>   -N
>   --new-file
>      In directory comparison, if a file is found in only one directory,
>      treat it as present but empty in the other directory.
> 
> 
> I can add this to the task guidelines if it's not deemed to hackish :)
> 
> 
> --Jeff
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to