[Glass] Another metacello loading puzzle: xml

Dale Henrichs via Glass glass at lists.gemtalksystems.com
Wed Dec 27 12:02:26 PST 2017


Iwan,

If you don't want to publicly share you load scripts and transcrips, 
then we can take this conversation to private email ... and post a 
summary conclusion when we're done for the benefit of others who may be 
facing similar problems ...

Dale


On 12/27/17 11:55 AM, Dale Henrichs wrote:
> 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