package: 'Sport';
configuration: 'XMLSupport' with: [ spec loads: #('Core') ];
configuration: 'SoapOpera' with: [ spec loads: #('Client') ];
baseline: 'Seaside30'
with: [spec
repository: self class localThirdPartySeasideRepository;loads: #('Base' 'Scriptaculous-Components' 'JQuery-UI') ];
project: 'SeasideDevelopment' copyFrom: 'Seaside30' with: [ spec loads: #('Seaside-Development') ];etc.
configuration: 'Magritte3 Base' with: [ spec loads: #('Magritte-Seaside' 'Deprecated') ];
--
You received this message because you are subscribed to the Google Groups "Metacello" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metacello+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Thursday, November 21, 2013 9:04:36 AM
Subject: Re: [Metacello] repositories / overrides
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Thursday, November 21, 2013 9:04:36 AM
Subject: Re: [Metacello] repositories / overrides
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Monday, November 25, 2013 8:57:33 AM
Subject: Re: [Metacello] repositories / overrides
Thanks, Dale.
> I've pretty much tested the scripts in the writeup and I figure that there is enough information for you to get a pretty good idea of what I am thinking. Soo, I'd really appreciate it if you took a critical look at what I am proposing and let me know if it the ideas can be applied to your situation or not. If not, I'd like to make tweaks to the implementation to fit your needs ...
Some ideas:
1. from [1]: "When you lock a baseline-based project: you are telling Metacello to always load the baseline from the given repository and, given the way that baseline-based projects work, to always load the packages referenced by the baseline specification from the given repository."
Yes, agree.
2. from [1]: "When you lock a configuration-based project: you are telling Metacello to always use the given version and to always load the configuration from the given repository"
This to me is semantically different. In 1, I load whatever version I've got checked out. in 2, I only load a specific version. To me, this does not make sense.
I would like the behaviour of 1, always. I don't care what was loaded previously, where it came from or that it is in the registry. I actually want a "Metacello new removeTheRegistry" function. I just want to load what is in the repository that I specify. In the order of dependency specified in the baseline. If I load a new ConfigurationOfGrease or whatever, that defines a new stable that I want to load, I just want it to load that.
3. I'm concerned about the propagation of the lock. If the repository contains various BaselineOf<Project>s, are they also locked? If I lock BaselineOfSeaside30, what happens to ConfigurationOfGrease, currently specified as versionString: '1.0.7.2'.
4. I want to get all my stuff from local repositories. If I load BaselineOfSeaside30, how do I say that Zinc must be loaded from a locally cloned repo? I've now changed our project configurations over to baselines. This is what I've done:
baseline: spec<baseline>specfor: #commondo: [specbaseline: 'Seaside30'
with: [specrepository: self class localThirdPartySeasideRepository;loads: #('Base' 'Scriptaculous-Components' 'JQuery-UI') ]];for: #gemstonedo: [specbaseline: 'Zinc' with: [ spec repository: self class localThirdPartyZincRepository ]]
I would like to do this in principle with all the configurations / baselines and I want to be sure that it honors that I've overridden its repository and that it does not hunt for packages / configs elsewhere.
> I did have to fix some bugs and add a new feature or two[2], so if you want to run the scripts, you should load the issue_215 branch of Metacello to pick up the new features and bugfixes:>
> Metacello new
> baseline: 'MetacelloPreview';
> repository: 'github://dalehenrich/metacello-work:issue_215/repository';
> load.
>
> BTW, I forked the issue_215 branch before you made your recent changes (another casualty or my lack of time), but that shouldn't affect the functionality.I see that issue_215 breaks some tests. Don't think it affects the versions we're using.
Will try. I've created another pull request. When those tests pass, I'll comment. Not sure if it is all useful.
I got it all loaded eventually with repositoryOverrides:, after unsuccessfully trying locks.
| > In your case it sounds to me that you want to consistentlyNot sure what you mean here ...
| > #disallow any and all upgrades and downgrades to Grease (except
| > when you explicitly load a different version) and this is
| > completely supported by the Metacello Scripting API ...
|
| No, not really. I want to use the same command to load our project.
baseline: 'WonkaRuntime';
repository: 'filetree:///somewhere';load
loadWonkaRuntimeWithProjectsGroup: 'Core'
fromWonkaRoot: '/home/wonka/development/wonka'
platform: 'GemStone64Bit2.4.4.4-x86_64.Linux'.
- 3rdparty
- glass (clone of https://github.com/glassdb/glass)
- zinc (clone of https://github.com/glassdb/zinc)
- Seaside30 (clone of https://github.com/glassdb/Seaside30)
- metacello (clone of https://github.com/finworks/metacello-work)
- shared_mcz (contains ConfigurationOf(GsMonticello|XMLWriter|OSProcess|Gofer|...)<version>.mcz packages. Most recent downloaded from repos. Some modified). Also a number of other mcz's used to bootstrap and those packages not in the cloned repos)
- pharo, GemStone64Bit<version> (contains platform specific mcz packages)
- monticello (contains all our code as a filetree repo)
| ItAs far as I can tell you have just described what Metacello does, so I'm not sure what your point is ...
| must pick up from disk that there's another version of Grease that I
| want to deploy (i.e. the ConfigurationOfGrease package changed the
| default / core version). And then it must load the new package
| versions.
| > Soooo, the fact that you want to "Metacello new removeTheRegistry"In the previous section you claimed that "it must load the new package versions". If you don't care about package versions then how does "it" know which ones are new?
| > means that I haven't done a good enough job of communicating this
| > information to you or you have run into bugs ...
| >
| > The Metacello Scripting API is intended to support exactly the
| > behavior you are asking for so we need to work out specifically
| > where it is failing your...
|
| Thanks for the patience, I really battle to understand why I need
| this. I have the code in the DB, on the classes. I don't really care
| about package versions.
| I want to make sure that the code I'm loadingThis sounds like a different problem, I use packages with extensions all of the time and I don't have to reload packages usig Gofer, so there must be something different in the way that you do your load or how you define your packages or ??? but I don't have enough detail here to know where the issue might lie. I need specifics, not generalities.
| is loaded when I'm done. Even after loading with metacello, we
| currently have to reload all the code again by going through the
| MCWorkingCopy registry and loading the packages using Gofer. This is
| because if there are extensions in a package and the package changes
| underneath it, the overrides are lost.
| I am considering this:I see that we have moved on from the discussion of how to manage external projects into something completely different. I don't think this has anything to do with Metacello.
| 1. remove all the methods on the classes we work with
| 2. remove classes that are not referenced by the incoming packages
| 3. load all the code
| 4. migrate
I would like to see a step by step description of what you are doing and exactly what problems you are experiencing. I don't think you should have to do this, but I clearly don't understand the exact problems that you are facing so I can't judge whether the steps you are threatening to take are necessary or not ...
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Tuesday, November 26, 2013 11:34:20 PM
Subject: Re: [Metacello] repositories / overrides
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Wednesday, November 27, 2013 6:19:38 AM
Subject: Re: [Metacello] repositories / overrides
I will agree, that as things stand right now. You should not lock `ConfigurationOf` ...The newly loaded configuration file as explained in the previous point. Read this in the context of locks. If I locked ConfigurationOfGrease, get a new ConfigurationOfGrease package and load it, my understanding is that it will not load the new config & version (if I use my top level loading script). My conclusion is that I should not lock ConfigurationOf.
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Wednesday, November 27, 2013 6:34:51 AM
Subject: Re: [Metacello] repositories / overrides
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Wednesday, November 27, 2013 7:08:22 AM
Subject: Re: [Metacello] repositories / overrides
baseline: 'WonkaRuntime';
repository: 'filetree:///somewhere';load
From: "Dale K. Henrichs" <dale.h...@gemtalksystems.com>
To: meta...@googlegroups.com
--
You received this message because you are subscribed to the Google Groups "Metacello" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metacello+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
From: "Otto Behrens" <ot...@finworks.biz>
To: meta...@googlegroups.com
Sent: Monday, December 2, 2013 9:42:26 PM
Subject: [Metacello] Re: repositories / overrides
--
You received this message because you are subscribed to the Google Groups "Metacello" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metacello+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
> | #(#CommandShell #Gofer #GoferProjectLoader #Grease #GsCore #GsFastCGI> | #(#Zinc #GLASS1 #Seaside30)
> | #GsMisc #GsMonticello #GsOB #GsSqueakCommon #HelpSystem #Magritte3
> | #OmniBrowser #OSProcess #ProfStef #RefactoringBrowser #SeasideTesting
> | #SoapOpera #SPort2 #Swazoo2 #XMLSupport #XMLWriter
> | #ZincHTTPComponents)
My issue is that these lists are embedded in the spec(s) on the
> | What bothers me about this is that we have to keep these lists of
> | packages up to date in more than one place.
>
> I only see one place where they are used, What other places are these lists used?
various configurations. If I miss one in this list (that a spec
defines), then I will have trouble finding it.
I still prefer just using repositoryOverrides: because it's less maintenance.
You've already got an object in the MetacelloProjectRegistration, so I
> I've been thinking along the lines of being able to keep a list of Metacello instances (one for each of the projects) that is fully specified for each of the projects ... the instances could be stored somewhere and used as needed, or the isntances could be created on demand.
think that it would be redundant information, which may be
inconsistent and lead to trouble. It may be better to extend the
project spec object to do more.
Sort of. I want to basically avoid caching, especially the
> Ideally you could use the same set of Metacello instances for all of your workflow steps:
>
> BaselineOfWonka configurationProjectSpecs do: [:spec |
> "download packages to local disk (see [1] for possible sematics)"
> spec fetch ].
package-cache because it slows the loading down (If I'm loading stuff
from a repo on the local disk, git or otherwise, it writes a copy of
the package into the package cache. This is redundant as I have the
files on my local disk already.) and I've had situations where there
was inconsistency. This is mainly because we're still manually merging
the stupid version files...
What I would like is to use my original script with my spec (not the
> If this is the type of thing that you'd like to do, then let's work backwards from here to figure out how we can make that happen...
stored / cached spec objects) and ask metacello to copy the mcz
packages into my override repositories.
That is because I would like
to update the spec first and then ask it to find what it needs, but
put it in my local repo. (For mcz's and configs).