Another slim implementation of Cypress decoupled from Monticello is the one I wrote for St/X:
https://bitbucket.org/janvrany/stx-goodies-cypress/src or in Cypress format itself: On Wed, 2015-11-25 at 21:42 +0100, Thierry Goubier wrote: > Hi Dale, > > thanks for the update. So not only it would be possible to extract > FileTree from its relation to Monticello, this has in fact already > been > done (and more than once). > > Thierry > > Le 25/11/2015 20:33, Dale Henrichs a écrit : > > > > > > On 11/25/2015 02:31 AM, Thierry Goubier wrote: > > > > > > > > > 2015-11-25 10:39 GMT+01:00 Skip Lentz <skip.le...@inria.fr > > > <mailto:skip.le...@inria.fr>>: > > > > > > > > > > I think having a FileTree reader/writer that is not > > > > coupled > > > > to Monticello would be good, but maybe I’m saying > > > > something > > > > that is not possible. > > > > > > > > > > > > No, it is possible (everything is), but a bit complex for > > > > maintenance (how do you track changes and corrections in > > > > the > > > > FileTree code?). > > > > > > Of course, the sky is the limit :P. Although I’m not sure I > > > understand what you mean here, could you explain? > > > > > > FileTree has a large set of test cases, sample repositories, CI > > > setup, > > > cross-platform knowledge, bug fixes coming from a large group of > > > users > > > (far larger than the Pharo community). > > > > > > Cutting ourselves from that is counter productive and looks like > > > a > > > case of the NIH syndrome. > > > > > > > Thierry, > > > > I understand where you are coming from with your comment and I am > > not > > necessarily disagreeing with you, but:) > > > > A "FileTree reader/writer that is not coupled to Monticello" is not > > necessarily a bad thing and in fact I have implemented such a beast > > a > > couple of times[1][2] and I think that Jan based his initial > > implementation on the Pharo Cypress implementation[5]. > > > > My initial implementation[1] was done in support of Amber > > Skeleton[3][6] > > where I added implemented an Amber source code server in Pharo and > > used > > the Cypress reader/writer[1] to pass packages back and forth > > between > > Amber and Pharo once the package hit Pharo it was written to disk > > using > > FileTree. > > > > The second implementation[2] was done to implement a FileTree > > reader/writer for Cuis which does not use Monticello, so I needed a > > reader/writer that understood the FileTree disk format without > > being > > coupled to the Monticello package implementation and loader. > > > > Richard Sargent has a Cypress reference implementation for GemStone > > that > > is also independent of Monticello[4]. > > > > These Cypress implementations read/write the FileTree disk format > > without being coupled to the in-image Monticello implementation ... > > the > > definition model and loaders are basically stripped down versions > > of the > > Monticello implementations, with the major difference being the > > absence > > of the Monticello meta data --- ancestors and the like --- which > > means > > that in a world where you rely on the disk-based scm to manage > > versions, > > there is no need to have the Monticello meta data in the image at > > all ... > > > > Skip will be downloading individual files from GitHub and will need > > to > > construct a coherent package model from those files and > > directories. > > There may be an advantage to constructing "Cypress snapshots" from > > the > > raw GitHub data as an intermediate format if nothing else - much as > > I > > did for the Amber Skeleton project .... > > > > If there is interest in moving forward with the Pharo Cypress > > code[1], I > > would be in favor of splitting that code out into a separate > > project, so > > that it can evolve independent of it's Amber Skeleton roots ... > > > > Dale > > > > [1] > > https://github.com/CampSmalltalk/Cypress/tree/master/implementation > > s/pharo/cypress/packages > > [2] > > https://github.com/CampSmalltalk/Cypress/tree/master/implementation > > s/cuis/packages > > [3] https://github.com/dalehenrich/amber-skeleton/tree/master/serve > > r > > [4] https://github.com/rjsargent/CypressReferenceImplementation > > [5] > > https://github.com/CampSmalltalk/Cypress/tree/master/implementation > > s/smalltalkx/packages/stx_goodies_cypress.package > > [6] https://github.com/CampSmalltalk/amber-cypress > >