3 ms·
Do serious Smalltalk projects use version control? If so, which one? How do they solve the apparent mismatch between Smalltalk philosophy of having everything
by praptak 16y ago
Do serious Smalltalk projects use version control? If so, which one?
How do they solve the apparent mismatch between Smalltalk philosophy of having everything in one image and the usual "files in directories" expected by version control?
Last time I used Smalltalk (a small project) I just kept the sources in files outside the image and reloaded from there but it felt clunky.
- gecko 16y agoYou're correct that most Smalltalks have a changes file that keeps a log of everything you've done, but that's now how you do version control or share changes. The changes file in practice is more of a kind of local version control, or unlimited undo buffer. For actually sharing changes, there are two systems that I'm familiar with: Pharo and Squeak Smalltalk have a DVCS client named Monticello that they use. It works similarly to Git/Mercurial/Bazaar/what-have-you, except that it versions classes and methods semantically instead of the actual changes file. This ends up working fine, and even has some major benefits (you can kiss whole swaths of problems goodbye when you're doing a semantic merge),but it does mean that your Smalltalk code requires its own version control. You can see a quick tutorial of how Monticello handles merging at http://www.lukas-renggli.ch/blog/monticello-merging http://www.lukas-renggli.ch/blog/monticello-merging , and there's what amounts to a command-line interface called Gofer you can read about at http://www.lukas-renggli.ch/blog/gofer http://www.lukas-renggli.ch/blog/gofer . Most people I've seen just use the graphical interface though, which is documented (somewhat) at http://wiresong.ca/monticello/v1/docs/ http://wiresong.ca/monticello/v1/docs/ . VisualWorks Smalltalk has its own version control system, also semantic, but not distributed, called StORE. I haven't worked with it much, but the general idea is the same: version classes and methods rather than the changes file. I know it can at least import Monticello repositories as well, and possibly work with them natively, but I've never done that, so you'd have to do some more research.
- avibryant 16y agoWe solve it by building Smslltalk-specific version control. Monticello, which cwp and I built for Squeak, is a Smalltalk-only DVCS that predates git and hg and has become the de-facto standard. Earlier systems include ENVY and StORE. After using any of these, flat-file, language un-aware version control feels clunky.
- EdwardCoffin 16y agoIBM Smalltalk (now owned / supported by Instantiations) and ParcPlace Smalltalk both had a revision control system called ENVY. It maintained a separate database that contained all the different versions of source for all your projects, and had a system for building up a new image containing the versions you wanted. I used to build a new image from scratch every morning before I started work, so I knew I had the current latest code. It was the best version control system I've ever used.
- Homunculiheaded 16y agoIn general I find that if you ask "Ah, but can smalltalk do Y?" the answer is yes, and better than what's considered standard elsewhere and also 5-30 years earlier. Whenever smalltalk comes up I'm always surprised that I don't use it more often.