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

goran.krampe at bluefish.se goran.krampe at bluefish.se
Mon Dec 6 09:01:04 UTC 2004


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.

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).

> 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.
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.

> 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.

 
> thanks Milan

regards, Göran



More information about the Squeak-dev mailing list