[Glass] Another metacello loading puzzle: xml
Iwan Vosloo via Glass
glass at lists.gemtalksystems.com
Wed Dec 27 10:43:28 PST 2017
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 . 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
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.
More information about the Glass