Metacello / metacello

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

GitFileTree Monticello metadata-less support #399

Closed dalehenrich closed 8 years ago

dalehenrich commented 8 years ago

Minimally make Metacello-Cypress package part of standard release ...

GitFileTree has metadata-less mode where the monticello.meta/version file and method properties files in a FileTree rep are not maintained. Eliminates the noise created by the changes to these files and conflicts that can't be automatically merged by git and by extension github pull requests.

Developers can opt in on metadata-less mode, but when they do Metacello may not always recognize that packages should be loaded because of Monticello version number confusion,

The Metacello-Cypress package will allow one to cause packages to be loaded regardless of the monticello version number, thus this support is critical.

Based on this conversation about GitFileTree it is likely that there will also be changes to how version numbers are encoded in package names and those changes should be covered by this bug as well ...

dalehenrich commented 8 years ago

See dalehenrich/filetree#195 for a related issue

dalehenrich commented 8 years ago

If we recorded which git version a package was loaded from, we could limit the number of packages being fetched and loaded ... fetching and loading all packages is pretty annoying and you lose some information as to whether or not you got the changes you wanted ... OTOH with Cypress mode, you don't care anymore ... you always get everything properly loaded for the project ... probably not necessary to announce that a package is fetched ...

dalehenrich commented 8 years ago

Now need to handle package-cache correctly for Cypress packages ... disable package-cache when fetching

dalehenrich commented 8 years ago

Several interesting bits of information discovered during testing (MetacelloCypressIssue399PackageCacheTestCase):

dalehenrich commented 8 years ago

Took at look at how expensive it might be to load all packages for all BaselineOfs ... and it is not cheap --- at least for GemStone it is also more expensive than it should be ... obviously we end up creating a snapshot for every package on every load ... anyway the last handful of commits (here too) have been aimed at stream-lining things a bit and so far I've got about a 30% improvement ... more possible methinks ...

dalehenrich commented 8 years ago

Here's the glassdb PR with the snapshot performance improvements for GemStone

dalehenrich commented 8 years ago

see PR #401 for merge