In the last month or so we've had a couple of different discussions on
this list involving adding support to Metacello (otherwise known as
"Cypress package extension") for GitFileTree's metadata-less mode[1] and
[4] and earlier this week I released a new version of Metacello[2] that
includes an updated version of the "Cypress package extension"[5].
Depending on the version of Pharo you are using, at some point in time,
I expect this new release of Metacello to be available in the standard
download. Until then, to install the latest version of Metacello into
Pharo execute the following in a workspace:
Metacello new
baseline: 'Metacello';
repository: 'github://dalehenrich/metacello-work:master/repository';
get.
Metacello new
baseline: 'Metacello';
repository: 'github://dalehenrich/metacello-work:master/repository';
onConflict: [:ex | ex allow];
load
If you are using GitFileTree's metadata-less mode and Metacello, then
add the following method to your BaselineOf:
projectClass
^ MetacelloCypressBaselineProject
and you are good to go.
If you are curious as to why "Cypress package extensions" are needed,
you can read this comment[6] for a description of what rules Metacello
uses when fetching/loading packages from a FileTree repository using a
baseline.
On a slightly different topic, Alistair Grant ran into a bug involving
Metacello and how it semantic version numbers[7] a couple months ago and
this release includes a bug fix ... the bug was related to the fact that
the parser was too lenient and did throw an error for some forms of
invalid Semantic version numbers ... with this fix an error is thrown
... of course it is entirely possible that there are ConfigurationOfs
out in the wild that "depend upon the old behavior" so if you get an
"invalid version number" error while working with a configuration and
discover that it is not practical to redefine the version numbers to
conform to the semantic version number format then you can add the
following method to the ConfigurationOf and the old, buggy version of
the parser will be used:
versionNumberClass
^ MetacelloOldSemanticVersionNumber
If you are sharing code between GemStone and Pharo, then you will want
to make sure that you install the new version of Metacello in GemStone
as well. See the GemStone release announcement for details[8].
Dale
[1]
http://forum.world.st/Saving-to-local-git-and-quot-Loading-all-file-names-from-http-pharo5-inbox-quot-tt4897962.html#a4905790
[2] https://github.com/dalehenrich/metacello-work/pull/401
[4]
http://forum.world.st/How-do-I-convert-a-FileTree-project-to-Metadataless-GitFileTree-project-tp4903920p4905054.html
[5] https://github.com/dalehenrich/metacello-work/issues/399
[6]
https://github.com/dalehenrich/metacello-work/issues/399#issuecomment-231464884
[7] https://github.com/dalehenrich/metacello-work/issues/392
[8]
http://forum.world.st/new-release-of-Metacello-metadata-less-FileTree-repository-support-part-IV-tt4906322.html