Tools for working with ChangeSets

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

Tools for working with ChangeSets

Tapple Gao
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

Reply | Threaded
Open this post in threaded view
|

Re: Tools for working with ChangeSets

Karl-19
Matthew Fulmer wrote:

> 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.
>
>  
Have you looked at the File Contents Browser and ChangeList browser ?
You can 'psudo' compile a file and browse it before fileing it in, look
at what changes what and sort out which method causes the problem. You
can file in class for class method for method. Great tools for massaging
old code into newer images.
Karl

Reply | Threaded
Open this post in threaded view
|

Re: Tools for working with ChangeSets

David T. Lewis
In reply to this post by Tapple Gao
On Thu, Mar 01, 2007 at 07:52:43AM -0700, Matthew Fulmer wrote:
> 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.

Just open a file list, select the change set file, click on
the "code" button to open a FileContentsBrowser on the change
set. From here you can see method differences, versions, and
so forth.

Dave

p.s. If you find some specific issue in the change set that
is causing the problem, you can cheat a little by editing a
copy of the change set file, and filing that in.