View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Source Code Management

Source Code Management


Ideally, when one uses a fresh version of Squeak for the first time the 'changes' file is empty. The 'changes' file grows as it records one’s new methods, and method changes. Therefore the 'changes' file is a useful tool for tracking bugs and overall understanding of how one has changed the system.

In recent years however, new versions of Squeak have shipped with the source in the changes files. In some versions the size of the 'changes' file was on par with the size of the 'sources' file itself! Not only did it bloat the size of Squeak, but it made the 'changes' file far less useful to the developer. However, the one big advantage (albeit restricted to few) of shipping the 'changes' file is it that provides Squeak “super users” the capability to track the evolution of methods within Squeak over a period of time.

However in Squeak 3.9, the last version of Squeak, the 'changes' file had grown so large so that the range of the source pointer in the CompiledMethod was in danger of overflowing. The release team was forced to condense the sources to counteract this. While this was the appropriate action, many Squeak developers were upset at the loss of past source code information in the 'sources' file. Hence the motivation for this project which aims to provide an intermediate solution wherein while for the average user an empty 'changes' file and only the latest version of source code is provided, the superuser has the option of downloading previous versions of the source code from a remote directory/database.

Condensing the Sources


From time-to-time, one may want to purge redundant versions of source code from the 'sources' file. This can be accomplished either by condensing both the 'sources' file and the 'changes' file or just the 'changes' file.

Condense Changes only affects the 'changes' file, and leaves the source file as is. This condensing removes all source code from the changes file except the most current version of each method. After condensing, the changes file only has one version of every new method’s source code, and one version of each method from the sources file that was changed.

Uploaded Image: CondenseChanges.jpg

Condense Sources however affects both the files. This condensing replaces the sources file with a new file that contains only the most current version of the source code for every method. All earlier versions are discarded and the changes file is emptied.

Uploaded Image: CondenseSources.jpg


Link to this Page