Reversibility of Changesets, FileIns, and packages from PackageLoader( SqueakMap)

Milan Zimmermann milan.zimmermann at sympatico.ca
Tue Dec 7 01:27:27 UTC 2004


Goran,

Thanks for your detail comments, really appreciate you taking the time. BTW, 
based on the list help I have my KomHttp working again...

Hope you don't mind I added  your answers to Squeak Wiki here:

http://minnow.cc.gatech.edu/squeak/3914

Sounds like I need to play with Monticello, but to be eventually of some help, 
I will need to learn about Change Sets to be able to submit fixes.

A few questions inline:

On December 6, 2004 04:01 am, goran.krampe at bluefish.se wrote:
> Hi!
>
> Milan Zimmermann <milan.zimmermann at sympatico.ca> wrote:
> > Hi,
> >
> > Another question from a Smalltalk environment newbie ... During the last
> > day I loaded KomHTTP-related packages using Package Loader into 3.7.
> > After that, by mistake, a change set from the "File List" (this change
> > set did not belong to 3.7 but 3.8) which broke KomHTTP .. for my lack of
> > understanding,  I loaded the change set both as "fileIn entire file" as
> > well as "install into new changeset".
>
> The only difference AFAIK between those two actions is that the latter
> does it in a separate ChangeSet and the former reuses the current one,
> thus potentially mixing it up with the rest you have in that changeset.
>
> > I'd like to revert everything to from before those changes - is that
> > possible?
>
> Various things are possible. :)
>
> > I guess what I am asking is whether following are reversible:
> >
> > 	- installing package from SqueakMap PackageLoader
>
> Packages on SM are in different formats. If they are in Monticello
> format then they should be "uninstallable" - but it is not an action
> that is available yet in the package loader UI. The Monticello browser
> might have it though.

Sounds that Monticello ~ Source Code Control system
>
> Packages using changesets etc are not reversible in general, I mean -
> you need to do manual work and since changesets can contain do its
> (arbitrary code being run on file in) it can in theory be impossible.
>
> > 	- installing change set using "fileIn entire file"
> > 	- installing change set using "install into new changeset"
>
> No difference between those two regarding reversability. Changesets are
> generally NOT reversible since they can contain do-its. But many/most
> changesets don't contain do-its so they could theoretically be
> reversible - well, if they also don't contain removals etc. Removals
> could also be reversible using the changelog - but they could also NOT
> be reversible (if the old version isn't in the changelog).

Goran, are you saying do-it's break reversibility because thay can change  
state of objects, create new objects etc? (as opposed to just "copying new 
code into image" which strictly speaking must be changing state of some 
smalltalk-level objects but for practical purposes does not change 
"application code"?)

>
> > I went to the Change browser and tried to "destroy change set" which
> > appeared to do it, but then noticed that all the KomHttp classes  were
> > left in the
>
> Nah, that only wipes out the ChangeSet AFAIK. The changes are still in
> the system there.

ok, thanks, i guessed that, but was not sure i have not broken something ...

> You can consider a ChangeSet to be kinda like a patch file. Or a "tape
> recording" of code modifications. Unfortunately ChangeSets are...
> slightly weird. For example - the ChangeSet object only contains a
> reference to the method you modified - not the version of the new
> method.
>
> So if you modify a method, a reference gets added to the ChangeSet -
> then you file out the changeset and the fileout will have the current
> version of the method in it. Then let's say you create a new changeset
> and modify the method again. If you now file out the old changeset you
> will get a different fileout - with the current method instead of the
> previous one.

so the first changeset looses the reference to the method it originally 
imported? if so i wonder if the "contents" of the method get's lost...

>
> > image, (looking from browser) which completely confused me. I looked at
> > Squeak wiki which gave me some help but did not really clarify the above.
> > Would appreciate any pointers ,
>
> Well, ChangeSets are generally not reversible and they are also, because
> of for example the issue described above, pretty icky things to use for
> primary Squeak development. My advice is:
>
> 1. For your coding projects, use Monticello.
> 2. For bug fixes, enhancements etc to send to the list or other
> developers, use ChangeSets. If you are working with someone using
> Monticello then you can of course use Monticello instead.

i guess i should use monicello for my playing projects even if i am the only 
person using it,

thanks again, Milan

>
> > thanks Milan
>
> regards, Göran




More information about the Squeak-dev mailing list