On Mar 25, 2011, at 3:29 PM, Tudor Girba wrote:

> Sounds great. So, what needs to be done then?

That depends upon what you are trying to do...For GemStone I have a class 
called GLASSProjectSupport that does the following:

  1. fetches all mczs and configurations for ConfigurationOfGLASS into an 
      in-memory dictionary-based repository
  2. copies new mcz files (packages and configs) into a directory in an svn 
      checkout directory, recording the original repository from which the 
package 
      was downloaded
  3. updates a packing list file so that the new mcz files are automatically 
copied into 
      the correct directory for release
  4. generates a topaz script that is used to bootstrap GLASS from the svn 
directory
      and the repository map is used to set the repositoryGroup correctly (as 
if the mcz
      files weren't loaded from the svn directory).

The basic script for doing step 1 is here:

  
http://code.google.com/p/metacello/wiki/FAQ#How_do_I_create_a_local_cache_repository_for_a_config?

although you would probably want to set ignoreImage: to true:

  version ignoreImage: true.

There's a little bit more monkey business if you want to store your project 
configuration (like ConfigurationOfGLASS) in your archive directory.

If you want to record the original repositories or get your hands on the list 
of mcz files/configs that were loaded, then it gets a little more complicated:

  loadDirective := version fetch loadDirective

You can traverse the loadDirective and extract the additional information you 
might want ...

If you are going to load using Metacello then a script for step 4 is here:

  
http://code.google.com/p/metacello/wiki/FAQ#How_do_I_override_the_repository_for_a_config?

I have toyed with the idea of creating something like a .mar file which would 
essentially encapsulate the above into a couple of steps:

  - one for create the .mar file
  - one for loading from the .mar file

The .mar file would be a zipped up directory repository plus some sort of doit 
that would provide the load instructions/options....for a .mar file it might be 
worth restoring the repositoryGroups for the mcz files, which means recording a 
repository map...

I haven't looked closely at the .sar file stuff, but maybe the .mar file could 
be wrapped in a .sar so that other deliverables could be included ... and a 
.mar file would just be a special case of a .sar file?

I am partial to the .mar file idea and I don't think there's that much new that 
would have to be invented, but I haven't thought through all of the issues yet 
... but now might be a good time to encapsulate the whole process and tie it up 
with a bow:)

Dale

Reply via email to