[squeak-dev] Monticello/MCM tricks (was Re: SkipLists removal)
Ken Causey
ken at kencausey.com
Sat Jul 4 19:43:11 UTC 2009
On Sat, 2009-07-04 at 12:18 -0700, Andreas Raab wrote:
> Ken Causey wrote:
> > Oh good, I have to admit I wasn't absolutely sure there wasn't something
> > more I needed to do.
>
> If the change is local to a single package there is not much you need to
> do. Monticello is reasonable in this case and the updater will just load
> the version of the package. Where it gets nasty is:
>
> * When you rename classes (this may have been addressed in one of the
> later MC versions?) as Monticello will delete the old class mercilessly,
> leaving all the instances in the dust
>
> * When you move classes between packages where you need to issue an
> update.mcm so that you have the destination package before the source
> package so that the class doesn't get deleted in the middle (of course,
> some of the time the update.mcm will be in the right order and you get
> lucky ;-)
This change is in fact all about packages, moving code from one package
to another. But the move in this case happens to be to a package now
outside of trunk so only the packages from which code disappeared remain
and need to be loaded. Should be OK I think.
> * When you have system methods that are modified during load and rely on
> new methods in the package. This is by far the biggest issue (and a
> problem even with Change Sets). For example,
> http://bugs.squeak.org/view.php?id=6535 contains a change to
> OrderedCollection>>copyFrom:to: which utilizes postCopyFrom:to: that is
> defined in the same place. In change sets you can at least manually
> reorder the methods. Monticello does it unpredictably so it may work for
> one person and not for another (I wish MC would load methods in a
> well-defined order).
>
> To deal with this, you need to make a separate MC package version with
> *just* the prerequisite method (in this case postCopyFrom:to:) and issue
> an update.mcm for that precise version of the package; this will ensure
> the updater loads that precise version of the package before going on to
> load the version of the method that utilizes it. When there's a lot of
> dependencies this is obviously not a very rewarding process...
>
> Cheers,
> - Andreas
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090704/9d6268e4/attachment.pgp
More information about the Squeak-dev
mailing list
|