Perhaps I was not really clear. My argument was against different _versions_ of a ConfigurationOfXXX in different (metacello-|catalog-)repositories. This will create a real mess because you _will_ get identical package versions of the ConfigurationOfXXX package in your package cache, leading to strange load errors (Metacello not finding a version, loading a wrong version, etc..) Keeping a _copy_ of the ConfigurationOfXXX in different metacello repositories is the way to go. Making different branches of ConfigurationOfXXX in the different metacello repositories is the way to versioning hell. At least, that is what I understood you intended to do? Take a look at ConfigurationOfZinc, ConfigurationOfSeaside3, ... they have a _single_ branch of their ConfigurationOfXXX for all platforms and these are copied everywhere for reference. Johan On 22 Mar 2014, at 21:51, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
2014-03-22 21:27 GMT+01:00 Johan Brichau <johan@inceptive.be>: I don't understand what squeaksource has to do with that. With main repository, I mean the repository of the project itself.
Almost all ConfigurationOfXXX are hosted together with the project itself. They are also referenced in that repo. The MetacelloRepo or MetaRepos are almost always secondary copies (if not, they should be)
Johan
Arghh NOOOO, so that is really going to be a problem for me ! With MetacelloRepository I absolutely don't care where to find a specific package, I have some kind of centralized catalog.
Now, if I must track each and every motion of package B from squeaksource to ss3 to SmalltalkHub to github to (what's next ?), the idea of catalog is completely broken then...
Nicolas
On 22 Mar 2014, at 21:10, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
OK, if the MetacelloRepository on squeaksource can still serve as reference, I'm perfectly OK with it, I don't know why I had this impression that anything beginning with those 6 letters was going to be seen as a problem ;)
2014-03-22 18:53 GMT+01:00 Johan Brichau <johan@inceptive.be>: Why can you not reference the main repository? The meta repository is just a place where the configuration loader tool fetches them.
Platform-specific elements go in the separate 'sections' of a baseline or version method.
Don't make separate branches of the same ConfigurationOf class. You will not only make your life hard but also confuse all users!
Maybe you can explain why you think you need those?
Johan
On 22 Mar 2014, at 18:20, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
I have some packages A that depend on another package B. In Metacello, I can easily declare the dependency spec className: 'ConfigurationOfB'; versionString: #'stable'; repository: ' http://www.squeaksource.com/MetacelloRepository' ]. But the repository is hardcoded here.
My problem is that I'd like to edit a ConfigurationOfA valid for pharo 1.x, 2.0.x and 3.0.x (so far so good) and put a copy in MetaRepoForPharo20 and another copy in MetaRepoForPharo30.
Since the repository is hardcoded, this is going to be a problem because the MetaRepo will then cross-ref other repositories and weaken robustness or miss uptodate ConfigurationOfB...
I'd like to avoid maintaining many branches of ConfigurationOfA.
How do others resolve this?