Metacello / metacello

Metacello is a package management system for Smalltalk
MIT License
87 stars 43 forks source link

Support for Metadata-less FileTree repositories #401

Closed dalehenrich closed 8 years ago

dalehenrich commented 8 years ago

Issue 390 Improve performance of Metacello tests on travis-ci for GemStone

Implement some hacks to eliminate the overhead for maintaining UndefinedSymbols information for GsDevKit.

Issue 392 MetacelloSemanticVersionNumber fromString: 'v0.v2.v0' incorrectly accepted as a valid version

The Semantic Version parser was accepting improperly formed version numbers like v0.v2.v0. Improved the parser to signal an error when illegal Semantic Version strings encountered. Added MetacelloOldSemanticVersionNumber for those projects that rely on improperly formed version numbers. Add the following method to your ConfigurationOf or BaselineOf:

versionNumberClass
  ^ MetacelloOldSemanticVersionNumber

Issue 399 GitFileTree Monticello metadata-less support

GitFileTree introduced the notion of optionally supporting metadata-less repositories: version and method properties files no longer read or written.

When Metacello encounters a metadata-less FileTree repository, and issue can arise if/when the package version on disk is equal to the loaded package version ... For standard Metacello loading from a BaselineOf, packages with the same package version is ignored. In FileTree, when a metadata-less repository is encountered, the author and package version default to cypress.1 which walks right into Metacello's blind spot ...

The solution is to use the Cypress package extension which causes Metacello to ignore the package versions when it comes to fetching and loading packages: all packages are loaded -- we rely upon the fact that Monticello compares the contents between the loaded and incoming package and only processes the differences, so reloading a package has no net effect ...

To enable the use of Cypress packages add the following method to the BaselineOf for your project:

projectClass

  ^ MetacelloCypressBaselineProject