On 6/29/16 5:30 AM, Thierry Goubier wrote:
Le 29/06/2016 12:57, Ben Coman a écrit :
On Wed, Jun 29, 2016 at 4:00 PM, Thierry Goubier
<[email protected]> wrote:
Le 29/06/2016 00:55, Dale Henrichs a écrit :


...


I'm pretty certain the MCLazyVersionInfo is the real culprit here ...
while reading the code I recognized that many of the basic patterns were
exactly as I had remembered them from years ago ... however ...
MCLazyVersionInfo this puppy with its "default behavior" to scan the
universe is the real culprit ... I would think that at a minimum the
repository or repository group would/could be know at the time that the MCLazyVersionInfo was created and a scan of just those repositories ---
already associated with the project --- would not be nearly as bad as
when we have now ...


The MCLazyVersionInfo thing is mine too; it was a solution to avoid keeping MBs of version info kept inside the image memory, with the cost of having to
reload that information when you access the ancestry.

Would it be feasible to drop all those MB except keep the latest
version of a package in-Image,
i.e. the one required to determine the next version number of the package. ?

This is not considered enough for Monticello. If you are on a multi-people team with a smalltalkhub repository, keeping memory of myPackage.7 is not enough because your team members may push .8, .9, etc... before your save, and your save should be .10, not .8. So an access to the remote repository is necessary (and all of them; maybe you're working with multiple smalltalkhub repositories for that package).
when you are doing the next version number calculation, you only need the first ancestor (the ancestor that is loaded in the image) ... to find whether or not team members have committed new versions involves scanning the packages in the repositories in the repository group and picking up the first version in the ancestry ...

it seems for a working copy that only the first ancestor is needed in the image ... the rest can be lazily loaded if one wants to see history ...

The new versions committed by team members aren't even in the ancestry of the working copy ...

I have not looked at the details of the caching that is used by the repository implementation with respect to versionInfo, but if my allInstances yesterday is any indication, it is/was always necessary to scan the repositories in the repository group to look for newer versions of the package but the version info for those scans wasn't necessarilyt cached anyway ...

Of course, MC does not lock the remote repository while you do that, so the number it generates at the beginning (just before you get the window where you fill in the package version comment) is not guaranteed to be up to date if a team member saves a new version in the mean-time.

Of course, MC does not forbid you to change by hand the version number.
Right ... so close counts in Monticello version numbers and horse shoes :)

Dale


Reply via email to