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 |
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. > > 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 |
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. |
Free forum by Nabble | Edit this page |