Version control for Smalltalk / Seaside?

Setup for Pharo (and Gemstone) Each developer works in his own image. Every change to a method he makes is saved locally in the changes file. This allows recovering when crashing the image.

Commits are made by creating a monticello file, having a package name, sequence number and the name of the developer. It knows its ancestry. This file is saved to a WebDAV server.

Here it is picked up by a Jenkins task. This runs the unit and integration tests and creates new images, so developers can start with a fresh image (at least) every day. Here are some details on merging using monticello.

The product composition (package structure) is another monticello file containing a metacello description. This also allows one to develop on Pharo and deploy on Gemstone. Once in a while you need to add class migrations.

For non-smalltalk dependencies and development, test acceptance and production differences, add the creation of virtualbox images using vagrant, chef-solo (or puppet, hopefully soon Coral), veewee. They are of course version managed using git. In addition to using static code-quality control tools (smallLint, also checks differences between smalltalk dialects), add Moose and create your own context dependent, dynamic visualizations of the project (humane assessment) In VisualWorks Smalltalk the local developer uses STORE with a relational database (e.g. PostgreSQL) to store local commits.

The code is organized in bundles of packages, with namespaces. A replication script is used to copy the local versions to and from a central database. From there the flow is the same as with the Pharo setup.

Short answer: you cannot (for now) use Git or Subversion. Even shorter answer: you don't need it :) Large answer: See Stephan explanation on how Pharo it self is created :)) Of course, if you are used to file based systems, this will be strange at first instance, but once you start working, you will realize that you have all the tools you need to version control (monticello –this is the replacement for Git/Subversion), and for creating complex installations (metacello –this is the replacement for things like maven). With some work (as always and with any platform you choose), you can setup your own continuous integration server (jenkins or hudson or whatever) and soon you will be team working just as in other environments, but with one big plus: you will be developing Seaside/Smalltalk :P.

Pharo has Monticello and Metacello, Squeak has Monticello, VisualWorks has STORE.

There are some tools for Svn/Git, but IMHO it is much better to go with the flow here and use Monticello because Monticello gives you a very similar experience as git does, but much simpler to use and much more integrated with the "Smalltalk way". You did not specify which Smalltalk, but if you are going to use Pharo it is definitely Monticello (and when stuff gets complicated - Metacello on top) to use.

Development in Smalltalk is usually more productive - but you have to learn about new tools first: Monticello/Metacello for packaging (think of it as saving a package in an own ZIP file with mcz extension and an own version number each time you commit). Metacello provides the informations wich Monticello packages fit together and should be loaded to provide a full working app (similar to POM's in Maven, but in a specific class file ConfigurationOfXXX where XXX is the components name). You do not need non-Smalltalk versioning tools like subversion unless you want to manage external resources like pictures or database scripts.

Also look at the Hudson/Jenking integration since this will also help you to automate image building and continuous integration.

VA Smalltalk has Envy. Which ever Smalltalk you choose, I think you will really like Seaside.

Please don't use signatures; as the FAQ describes, your information is already available in your user card to the right. Also, don't assume that everyone knows what Envy is - It seems that this developer did not! I've suggested an edit to address these issues.

– Kevin Vermeer Nov 23 at 17:27 "Mastering ENVY/Developer" By Joseph Pelrine, Alan Knight, Adrian Cho. Books.google. Com/books?

Id=ld6E19QIMo4C – igouy Nov 23 at 17:42.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions