monticello with dependencies
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,
- 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
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.
More information about the Squeak-dev