monticello with dependencies

Avi Bryant avi at beta4.com
Tue Jan 20 01:25:08 UTC 2004


In the spirit of release early, release often, I've just posted to SM a 
release of Monticello (marked as #69) that has the most basic, buggy, 
rudimentary support for package dependencies possible.  This is 
something that hopefully people will try to use, and then tell me 
what's horribly wrong with it so that we can fix it.

There are now two new context menu items in the package list of the 
Monticello Browser.  The first is "add required package".  This will 
let you choose another package from the list, and will add this package 
as "required" by your selected package.  When a package is selected, 
all of its required packages will show up as bold.  You can also choose 
"clear required packages" to reset this list.

Required packages come into play when you save, load, or merge a 
package version.  The easiest way to explain this is probably through 
an example.  Say you have a package A, which has required packages B 
and C.  Say that A is currently a modified version of A-avi.2.  The 
version of B currently in the image is B-avi.3.  The version of C 
currently in the image is an unsaved modification of C-avi.7.  When you 
save A, it will do the following:

- Create a new version of A (A-avi.3).
- Save C so that there is a well defined version of its current state, 
ie, C-avi.8
- Record the current versions of B and C as dependencies in the new 
version of A (so A-avi.3 will have B-avi.3 and C-avi.8 listed as 
dependencies)

If, at a later point, you try to load A-avi.3, the system will first 
load its dependencies: B-avi.3 and C-avi.8.

It's easy to simulate a bundle or configuration using this system: 
simply create a package with no code associated with it (name it 
something like "FooBundle", which presumably won't match any class 
categories), and add the component packages as requirements.  Now when 
you save or load that package you will be saving or loading all of its 
component packages as well.

Please, experiment with this and let me know what you think.  It was an 
afternoon's hacking, so don't expect too much, but hopefully it'll at 
least spur some further discussion.

Cheers,
Avi




More information about the Squeak-dev mailing list