Thierry,

Very good points and I agree with all of them ...

Regarding a Smalltalk-based merge tool, I've written a git mergetool for tODE (consider it a prototype) that could be adapted/ported for Pharo ....

My thoughts regarding the MC issues ... Fyou make good points some of the "internal bugs" in MC and I think that it is important to point out that the "internal bugs" you are referring to only affect Monticello with regards to its repository functionality and not its package functionality .

My inclination is to move forward and create a new, simpler package model (Cypress is a good name) that is used with disk-based repos ... the new package model would be protocol compatible with MC so that definition-based snapshot comparisons continue. The new package model would only be used for loading and there could/should be facilities for converting between MC and this new package model.

FileTree would continue to be MC based and Cypress would be able to read FileTree and FileTree would be able to read Cypress.

The improvements and changes that we are discussing (many of which require a fair amount of implementation work) would be done in Cypress ...

The rationale is that Monticello packages encompass both the repository and the code/definitions and for disk-based scms, Cypress would only need to worry about the code/definitions --- and would make it possible to move away from the version number-based package names that aren't necessary when the underlying scm is doing the versioning without affecting the MC implementation ....

Of course, if a new Cypress package model were introduced, the tools would need to change, but since we are already considering changing tools, this would be the perfect time to improve the underlying model for disk-based SCMs.

Dale

On 2/3/16 1:13 AM, Thierry Goubier wrote:

I went through all the different possible file formats, class-based, package-based, method-based, log metadata and the like, and I concluded that:

- the method based format is as good as any other.
- method based format allow for method-history queries on the git/vcs history (as well as class based / package based queries). - the tree structure on github or bitbucket is quite convenient (and browsable) to the point one could edit a package directly in it (I do when I need to do a quick fix). - anything that can compress a bit the metadata version is probably good to consider. version files can be huge.
- merge drivers really work and releave us from conflict resolution
- we need a merge tool written in Smalltalk/MC
- MC version numbering is a very bad idea
- MC almost never using properly UUIDs is a very bad behavior
- MC packages history can be considered broken in the general case
- it takes time to define, implement, test and really use a new format and tooling


Reply via email to