On 10/30/2015 10:04 AM, Eliot Miranda wrote:
Hi Dale,

     but why can't Metacello provide something really simple that automatically 
generates a configuration with all the prerequisites fully defined as fixed 
specific versions?  Then Holger can easily freeze his release using the new 
confit and continue his internal development using his current configuration.
Your suggestion implies that Holger would have to "take ownership" of the generated configuration and he would no longer be using the "official" configurations ... If the official configurations for the projects he is using change, how do you propose he merge in those changes?

In git the version that you check out _is already_ a collection of the "fixed specific versions", so there is no need to create and maintain an "automatic configuration generator" .... that's the SCMs job.

When using git things get simpler rather than more complex. For example just compare the ConfigurationOfSeaside3[1] (mzc repo) and the BaselineOfSeaside3[2] (git repo). On method count alone there are ~10 times more methods in ConfigurationOfSeaside3 than in BaselineOfSeaside3 ... then look at the methods themselves!

[1] http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/ConfigurationOfSeaside3-JohanBrichau.280.mcz [2] https://github.com/SeasideSt/Seaside/tree/master/repository/BaselineOfSeaside3.package/BaselineOfSeaside3.class/instance
Why is is about the repository and not the versions?
Because versions _should_ be managed by the repository, not the package manager ...

git and other disk based SCMS give me a single SHA (or other identifier) that uniquely identifies the collection of files on disk .. one can tag this SHA and give it a version name ... this is the job of an SCM ...

The ConfigurationOf was invented to fill in the gap between what you could do with Monticello and what needed to be done --- which was to tag a _collection_ of packages with a version name --- and manage project and package dependencies ....

Metacello does this.

But there is more to "to be done" than just tagging a _collection_ of pages with a version name ...

One should be able to see the differences between versions: changes to packages plus added and removed packages. Metacello does not do this.

One should be able to merge one version into another. Metacello does not do this.

Git and other SCM based SCM do show you diffs between versions and you can merge changes between two different versions... as an added bonus you can include your documentation, images and shell scripts in the same directory structure and version them altogether in one swell foop.

Rather than attempt to duplicate the entire range of functionality that git and other disk-based SCMs provide, I choose to leverage existing functionality and put my effort into inventing new things in Smalltalk....

Dale

Reply via email to