Tools for working with ChangeSets

Matthew Fulmer tapplek at gmail.com
Thu Mar 1 14:52:43 UTC 2007


I am trying to file in a changeset that was made for Squeak 3.2,
but will lock up a 3.8 image when filed in, due to changing some
really deep stuff with in Object (such as doesNotUnderstand:).
So I looked for a way to differentiate between the ChangeRecords
that override an existing method from those that don't, and I
came across ChangeList.

ChangeList seems to be the object that is created from a .cs
file, but the class itself seems to be a black box. For
instance, there is no obviously correct way to create a
ChangeList from a .cs file without popping up the change viewer
tool. to do that, I had to copy the class method browseStream:
to a workspace and did all but the last line (strangely,
this class seems to be somehow tied to the UI event loop, so
debugging browseStream: freezes the UI).

Then, once I had a ChangeList without a window, I was able to
call ChangeList>>changeList to get at the list of ChangeRecords
and sort them like:

dangerous := changeList changeList select: [:each|
    each methodClass ifNil: [false] ifNotNil: [
        each methodClass canUnderstand: each methodSelector]]

and similarly for "safe" changes. Now, again, there is now
obviously correct way to create a ChangeList from this
OrderedCollection of ChangeRecords.

The problem is that ChangeList is trying to be both a Model and
a View (at least that is how it seems to me), and is not doing a
very good job at either. The tools for ChangeSet manipulation
seem to be much better, and the only difference that I can see is
that ChangeList handles external code and ChangeSet handles
in-image code. 

My questions:
- Is there some tool that does what I am looking for? 
- Why the difference between ChangeSet and ChangeList?

If there is no tools for the task I am attempting, I will just
keep hacking it.

-- 
Matthew Fulmer -- http://mtfulmer.wordpress.com/
Help improve Squeak Documentation: http://wiki.squeak.org/squeak/808



More information about the Squeak-dev mailing list