[Glass] Another metacello loading puzzle: xml

Dale Henrichs via Glass glass at lists.gemtalksystems.com
Wed Dec 27 11:55:20 PST 2017


Okay ...

Now I understand what you are trying to do, so now I would like to 
understand the exact problems you are having ...

So I would like to start over ... I still believe that you should be 
doing something like the following:

   | version repo |
   repo := MCDirectoryRepository new.
   repo directory: FileDirectory on: '<path to directory>'.
   Metacello new
     configuration: 'XXX';
     version: '1.0';
     cacheRepository: repo;
     fetch.
   Metacello new
     configuration: 'XXX';
     version: '1.0';
     repositoryOverrides: (OrderedCollection with: repo);
     load

But it sounds like you don't have a single master configuration or 
baseline to do your loads ... right? if this is the case, then the 
problem is just slightly more complicated ...

Sooooo, please provide me with the set of Metacello load scripts that 
you use to load your application without involving any caching at all 
... and the Transcript output for the full load. This will allow me to 
understand when and where the http repositories get hit as well as 
whether or not github repos with zip file downloads are involved or not 
(my suspicion is that things might not work as expected when gthub 
downloads are involved --- a use case for which I have not tests) ... 
rather than guess, I'd rather know ...

Once I've seen your load script and the load output, I should be able to 
figure out what needs to be done to get you moving in the right 
direction ...

I know that there are other folks out there that use variations of the 
cacheRepository/repositoryOverrides scripts for their production needs 
and it would be helpful if they were to chime in with examples of the 
scripts that they use as well

Dale

On 12/27/17 10:43 AM, Iwan Vosloo via Glass wrote:
> Hi Dale,
>
>
> On 27/12/2017 19:13, Dale Henrichs via Glass wrote:
>> Not sure what you mean by "scripting API"?
>
> I mean as per the heading of [1]. I thought that referred to working 
> with via a Metacello instance as explained on that page instead of via 
> projects or versions of a configuration.
>
> > Perhaps you could be more specific about exactly what you are trying
> > to achieve
>
> Thats complicated (by details). But, I have inherited the job of 
> upgrading our systems. They, and the scripts that manage them are 
> dependent on Metacello for loading things and for expressing 
> dependencies between things....and have evolved over time which means 
> I need to understand Metacello and our intricate context and make 
> things work again on Gs3.4. (Expect lots more strange questions.)
>
> What the home-grown scripts do is basically: build a CI extent, 
> starting from the seaside extent, using pretty much only a local 
> BaselineOf that pulls a bunch of 3rd party projects in. Some of these 
> are ConfigurationOfs with mcz files, some are just mcz projects with 
> no Metacello, some are cloned repositories etc. There are a fair 
> number of packages being pulled in, and we won't live in a 
> git-repo-only world any time soon.
>
> The same scripts also upgrade production systems.
>
> The CI extents can be built using an option that fetches things via 
> the network, but once that is done they typically just use what we 
> fetched before. Also, the CI builds run continuously so we dont want 
> them to hit the network all the time.
>
> It is handy to be able to say "go fetch all you need and save it on 
> disk"... it is more cumbersome to clone several git repos... you have 
> to know which ones, which branches and you have to distribute these to 
> the build machines too. (We use git submodules for that.) If I can 
> just say Metacello fetch, and save the resultant cache repository I 
> dont need to even know which dependencies are all pulled in.
>
> We also depend on exact versions of things and use that info to make 
> decisions when there is a conflict.
>
> I am still trying to figure Metacello out, but what would be nice is 
> if I can, in my BaselineOf point the various bits to github repos, and 
> still fetch and save the fetched result in a cacheRepository inside my 
> own project's git repository. Then I can handle all the different 
> kinds of packages the same way.
>
>
> [1] 
> https://github.com/Metacello/metacello/blob/master/docs/MetacelloScriptingAPI.md
>
>
> Thanks
> Iwan
>



More information about the Glass mailing list