Version control for InterSystems Ensemble/Caché

3.9k Views Asked by At

I'm in a group which is starting to develop using InterSystems Ensemble (an integration framework built on top of InterSystems Caché).

InterSystems has not made the Ensemble Management Portal source-control-aware and this seems a source of problems for development team we would like to address.

I would like to know which version control system are you using for Ensemble/Caché and how are you structuring your development process around it.

7

There are 7 best solutions below

4
On

If you are not afraid by development work, you can make some development to hook studio to your current source control tool. There are hooks in place in Cache that allows you to detect modifications on files and to interact with your source control tool.

Here a link to a pdf the describes the basis : Using the Studio Source Control Hooks

Of course with this solution you will have to do a lot of work on your side.

0
On

Another alternative seems TrackWare which is also designed specifically for Caché.

0
On

I've found VC/m, a version control system designed for Caché.

Feel free to add your comments if you have had any experiences with it.

3
On

I'm using Mercurial and though I do use a Cache Studio source control hook (I'm not using ensemble) I think basically the same solution would work for you.

The key is that it's distributed source control. So all the hook does is, on a save, export the current file to a folder on my hard drive, and check it in to my local repository. When things are working right locally, I push it to the central repository - in other words, I just use distributed source control in a normal way.

It's nice to commit each save since this gives me a way to roll things back if I mess something up, but it isn't really necessary. You could write something that pushes the code out to your local repository when you call it from the Cache command prompt.

With distributed source control the fact that check-in and check-out features aren't supported doesn't matter, you handle those issues by merging when you push to the central repository (or however you decide to structure your repositories).

One warning - for Cache class definitions, they are exported as XML in a format you don't define. It includes a time stamp of when the file was generated, and a last modified date. These fool the source control system into thinking they have changed when they have not. So you will have to parse the XML at least enough to strip those out. I don't know of a flag to prevent them from being generated in the first place.

0
On

Caché Source Control

The Best Solution! Good luck!

0
On

Late reply, but anyway - you can take a look at the CodeTools from Synerva. . CodeControl works as a Studio plugin

0
On

Synerva's CodeTools offer a pretty good solution for that. have been using that on several projects for quite a while.