Diego, You raise some good points here ... In the Metacello Scripting API, I have added some capabilities that just might fill the bill.
For example you can write the following expression: Metacello image configuration: 'MyProject'; version: '1.0.1'; onUpgrade: [:ex | ex deny]; load. The onUpgrade block is evaluated whenever Metacello detects an upgrade of a project ... the exception is an instance of MetacelloResolveProjectUpgrade which is Notification that provides information about the current in-image project (version name, etc.) and the proposed incoming version, so you can be very fine grained in your control. In addition there are #onDowngrade: and #onConflict: variants as well.. The Metacello Scripting API needs to be ported to Pharo 2.0 (Christophe and I are working on this ... I am very busy right now so I won't be moving fast here:), but it does run fine in GemStone, Pharo1.1-1.4, and Squeak4.3-4.5 ... I haven't release the Metacello Scripting API, because I just haven't the kind of feedback that I'd like when introducing a new API like this (if you look closely at the above expression, you might have several questions about details of the API). There are a number of folks that are using the Metacello Scripting API, but I haven't gotten enough bug reports to tell me that folks are really beating on it:). I've been using it myself for about 8 months, but I work in a limited number of use cases. Now that folks like you are asking for features that I think I've addressed in the Scripting API, perhaps I can start getting some meaningful feedback. If your projects are on Pharo2.0, you'll have to wait for Christophe and I to finish the port, otherwise you can take it for a spin[1] (there is some documentation as well) and let me know what makes sense to you and what doesn't. I'm prepared for the fact that when folks take a look at the Scripting API, I will need to make significant changes to the API so you should be prepared for that as well:) Dale [1] https://github.com/dalehenrich/metacello-work/blob/master/README.md ----- Original Message ----- | From: "Diego Lont" <diego.l...@delware.nl> | To: Pharo-project@lists.gforge.inria.fr | Sent: Friday, April 19, 2013 1:36:37 AM | Subject: Re: [Pharo-project] Metacello configuration conventions | | Hi all, | | I just want to add another thought to the convention discussion. | | In my work process I have two different activities when deploying new code: | 1) I want to deploy a patch, that only includes the bugfix. | 2) I want to deploy a release, that includes all updates. | | In the first I usually do not want to upgrade dependencies. If dependencies | need upgrading I want to make this decision manually. | | In the second I usually want to upgrade dependencies. If dependencies need | upgrading this should be done automatically. | | Metacello supports both, but not at the same time. Either you mark your | configuration with fixed versions (best for patches) or with symbolic | versions (best for releases). | | Currently we have a baseline, a version, and groups that I can edit. I think | I want a third thing: the deployment, where I describe certain deployment | strategies. So that I can say: | ConfigurationOfMyProject project stableVersion patch load | ConfigurationOfMyProject project stableVersion loadRelease | or something like this. | | Cheers, | Diego |