8

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.

fglez
  • 8,422
  • 4
  • 47
  • 78

7 Answers7

4

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.

fglez
  • 8,422
  • 4
  • 47
  • 78
4

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

fglez
  • 8,422
  • 4
  • 47
  • 78
3

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.

FrenchData
  • 630
  • 5
  • 10
  • This is a solution for Caché, but InterSystems has not made the Ensemble Management Portal source-control-aware so hooks are not activated when Ensemble productions are modified :/ – fglez Dec 14 '09 at 11:42
  • 1
    Thanks for the information. Are the other soutions you proposed able to manage the Ensemble part? – FrenchData Dec 14 '09 at 12:07
  • They are not, because they implement those same hooks :(. I wanted to know if someone else has faced this and how they are dealing with (setting up an update process involving people is the only solution that comes to mind). – fglez Dec 14 '09 at 20:24
  • I believe ISC has made production items source control aware in the newer 2011/2012.x versions, FWIW. – mccrackend Jan 27 '12 at 19:23
1

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.

psr
  • 2,870
  • 18
  • 22
  • The $system.OBJ.Export takes as its 3rd parameter a string containing flags (documented as qspec). Sending "/diffexport=1" (excluding quotes) in this parameter will exclude modification time stamps (and a a couple of other things) from the export – Steve Mallam Sep 03 '12 at 15:48
  • @SteveMallam - Thanks! Do you happen to know where that is documented. It's not in the ShowFlags method or the class documentation. – psr Sep 04 '12 at 16:28
  • Apologies - just saw this question. Don't know about documentation, but from %SYSTEM.OBJ Class Reference (e.g. http://docs.intersystems.com/cache20122/csp/documatic/%25CSP.Documatic.cls?CSPCHD=00c00v3d00002bwfZO2x6U0000EYSBS6XxkRToTmb6F2qrGw--) "qspec is a list of flags or qualifiers which can be displayed with 'Do $system.OBJ.ShowQualifiers()' and 'Do $system.OBJ.ShowFlags()'" – Steve Mallam Oct 26 '12 at 10:19
0

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

def
  • 1
0

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

itsols
  • 5,406
  • 7
  • 51
  • 95
dev
  • 1
0

Caché Source Control

The Best Solution! Good luck!

kran1um
  • 972
  • 2
  • 20
  • 33