This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Comparing Sources
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
With the help of David Pennell, I've gotten Seaside working. When I compare the behaviour of Seaside under VW, it differs from that under Squeak---aka, the VW port has some bugs. Now, the first thing I'd normally do in a file-based system is to do a compare of the sources. But in Smalltalk, how do I do this?
Well, comparing sources in a Smalltalk system isn't hard, assuming that all such sources are in the version control system - for VisualWorks, that would mean Store. So assuming the base Squeak code (which would not work in VW) were versioned off, one could run a comparison using the Store tools:
Connect to Store
Load the version you want to compare
Select a package or bundle in that version and - on the right mouse menu - do a comparison with the original (presumably Squeak in this case) version
Now, there are going to be some issues with this kind of thing - Squeak and VW are not plug compatible - meaning, you might not be able to get the base Squeak version loaded into an image (and thus versioned into Store) in the first place.
Now, if you have the code in chunk format from Squeak (i.e., a file out) - you can run a comparison independent of Store. (this is how I compile diffs between versions of VW here).
Open a ChangeList tool
Read Sources from the chunk file exported from Squeak
On the Remove menu, Same Code as System and Same Source as System
On the Forget menu, select Forget All Marked
Now you have the differences, which you can get a reporrt on by running Compare with System (assuming you have Seaside loaded). Now, there's another issue you'll run into here - VW has namespaces, and Squeak doesn't. If the Seaside code in VW is in a differnt namespace than Smalltalk, then pretty much everything is going to come up as a difference. That's a harder issue to deal with...