The Inbox: Monticello-mva.668.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Monticello-mva.668.mcz

commits-2
A new version of Monticello was added to project The Inbox:
http://source.squeak.org/inbox/Monticello-mva.668.mcz

==================== Summary ====================

Name: Monticello-mva.668
Author: mva
Time: 11 April 2017, 1:57:01.468779 pm
UUID: c484f301-b534-40c5-8b0f-b8c1c2bc4a7c
Ancestors: Monticello-nice.667

Stop infinite recursion when trying to 'Save' a new version or 'Update Squeak' after having set 'store diffs' on 'package-cache'

=============== Diff against Monticello-nice.667 ===============

Item was added:
+ ----- Method: MCDiffyVersion>>asDiffAgainst: (in category 'converting') -----
+ asDiffAgainst: aVersion
+ aVersion info = self baseInfo
+ ifTrue: [^ self].
+ ^ super asDiffAgainst: aVersion!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Monticello-mva.668.mcz

Milan Vavra
This patch,
http://lists.squeakfoundation.org/pipermail/squeak-dev/2017-April/194136.html
makes it possible to use 'store diffs' on the 'package-cache' repository.

After you have yellow-clicked the 'package-cache' repository in Monticello
Browser and selected 'store diffs':

- without this patch, when you try to click the 'Accept' button in the 'Save'
dialog in Monticello, the image will go into an infinite recursion.

- without this patch, when you try to click 'Update Squeak' in the Squeak
menu, the image will go into an infinite recursion showing 'Diffing...'.

Best Regards,

Milan Vavra
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Monticello-mva.668.mcz

Hannes Hirzel
Hello Milan

Thanks for posting this enhancement to the inbox.

Could you please explain why I would want to 'store diffs' on the
_package-cache_ ?

Regards

Hannes

On 4/11/17, Milan Vavra via Squeak-dev
<[hidden email]> wrote:

> This patch,
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2017-April/194136.html
> makes it possible to use 'store diffs' on the 'package-cache' repository.
>
> After you have yellow-clicked the 'package-cache' repository in Monticello
> Browser and selected 'store diffs':
>
> - without this patch, when you try to click the 'Accept' button in the
> 'Save'
> dialog in Monticello, the image will go into an infinite recursion.
>
> - without this patch, when you try to click 'Update Squeak' in the Squeak
> menu, the image will go into an infinite recursion showing 'Diffing...'.
>
> Best Regards,
>
> Milan Vavra
>
>
>
>
> --
> View this message in context:
> http://forum.world.st/The-Inbox-Monticello-mva-668-mcz-tp4941777p4941780.html
> Sent from the Squeak - Dev mailing list archive at Nabble.com.
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Monticello-mva.668.mcz

Milan Vavra
Hi Hannes,

When saving a new version of a Monticello package into a repository, you
have an option of saving either as a snapshot - a file with an .mcz
extension or as a diff - a file with an .mcd extension.

When you select 'store full versions' you opt for saving as a snapshot.

When you select 'store diffs' you opt for saving as a diff.

Snaphots store the whole state of the system category corresponding to the
package's name.

Unzip an mcz, find source/snapshot.st.

Look at it in FileList to see what I mean.

Think of them as a Full Backup of the package. They store the whole state
of the version of the package at the moment in time they were saved.

Diffs store only enough to be able to patch some previous version, the one
they were made against.

Unzip an mcd, find old/source.st and new/source.st. Look at them in
FileList.

Think of them as Differential Backups of the package. They only contain the
differences of the version they represent against their base version at the
moment in time they were saved.

As such, they have different properties.

Mczs are self contained. One mcz is enough to restore the state of the
package.

Mcds are not self contained. An mcd relies on availability of the version
they were made against to reconstruct the snapshot they represent. A string
of mcds must end with an mcz at some point, as ancestor.

If you unzip an mcz outside of Squeak, it is difficult to see what has
changed because all the classes and methods of the package are saved in it
- see snapshot/source.st. You can only make sense of it by looking at it in
Monticello Browser in Squeak and compare it against another version.

If you unzip an mcz outside of Squeak, it is still possible to see what has
changed by looking at the old/source.st and new/source.st.

Because they contain the whole state of the package they represent, mczs
are big.

Because they contain only what has changed since the version they have as
their base, mcd are much smaller.

For example if you want to make small experimental changes to the Morphic
package, a snapshot of Morphic, 'Morphic-mt.1296.mcz' is 1,726,488 bytes
long. This means that you will quickly fill up many megabytes of disk space
if you save a few versions as mczs.


My other contribution regarding mcds
http://lists.squeakfoundation.org/pipermail/squeak-dev/2017-April/194057.html
makes mcds even smaller in a backwards-compatible way. See the discussion
there.

Best Regards,

Milan