Upgrade scripts?

Colin Putney cputney at wiresong.ca
Tue Oct 25 12:34:57 UTC 2005


On Oct 25, 2005, at 5:07 AM, Cees De Groot wrote:

> Incidentally, the customer uses VAST with ENVY/Manager. It has a whole
> slew of warts (more than I care to list here ;-)), but one very nice
> feature: loads are atomic. Which means that you can cancel a load
> halfway and nothing has changed in your image. AFAIK, this is missing
> in MC, not?

Yes, we've wanted to put this in MC for a long time. As it happens,  
I'm working on a SystemEditor package that will allow tools to make  
multiple changes to the system and have them take effect atomically.  
When it's ready, it'll be an important part of MC2, and could be  
retrofitted into MC1 as  well. It might even be worthwhile to think  
about doing an atomic ChangeSet loader.

As a simple example, Stéphane recently ran into a problem where he  
tried to load a package that modified Rectangle>>insetBy: so that it  
called #isRectangle, which is a new method in the same package. With  
SystemEditor, Monticello wouldn't have to know about the dependency  
between the two methods; it would do something like this:

"create an editor for the class we want to change."
system := SystemEditor new.
class := system at: #Rectangle.

"Make changes using the usual protocol."
class compile: newVersionOfInsetBy
class compile: newMethodIsRectangle

"commit the changes atomically."
system commit.

Because the protocols for making changes are the same, updating  
Monticello to use SystemEditor should be pretty easy.

Colin


More information about the Packages mailing list