Stefan Cronje · Oct 20, 2018

Using git when sharing code between Ensemble and IRIS instances- Storage definition challenges


We have a few projects and some of these projects share code "libraries". Some of which are persistent classes that are used by multiple systems. All these are currently deployed on Ensemble. We want to move some of the smaller ones to the cloud and make use of IRIS.

The challenge is that once we synchronise the code to IRIS from Atelier, then IRIS changes the storage definitions, which then creates changes to the files. We do not want to commit all these changes to git as it will happen again once someone synchronises with Ensemble. The developers also need to be able to make changes to the classes, regardless of whether it is deployed to Ensemble or IRIS.

Ensemble: <Type>%Library.CacheStorage</Type>

IRIS:  <Type>%Storage.Persistent</Type>

We can try and create multiple branches on git, but this will mean we will constantly have to merge code on every class that contains a storage definition. This creates too much overhead and wastes time.

Currently it seems like a bit of a deal breaker to migrate to IRIS. Some of the projects on Ensemble can't migrate to IRIS now as it is running on Solaris SPARC, which is not supported on IRIS.

Any thoughts on how we can still accomplish this goal without creating too much overhead?

0 292
Discussion (2)1
Log in or sign up to continue

Hi, Stefan!

In this situation, I would suggest using RELEASES approach for different InterSystems Data Platforms. E.g. you can generate XML release package from the code base in git and then replace all the specific places for a given version on a build release phase. As a result you will have different XML packages for Ensemble and for InterSystems IRIS and have one code base, say in IRIS.

For example, you can see that approach @Eduard Lebedyuk used for RESTForms distribution. There are 2016.1 and 2016.2 release packages which can be installed in 2016.1 and 2016.2+ Caché or Ensemble versions respectfully.

To simplify release building I can recommend ISC.DEV utility which can export a release or patch file(upon git commits) for a given mask of classes.


Hi Evgeny,

Thank you for the suggestion.

We still then need to keep on developing primarily on Ensemble and once we release, then we create a release file for IRIS, which sounds good. This does create the risk of testing something on Ensemble and it maybe does not work on IRIS.

Every project has its own set of classes as well in addition to the shared code libraries. On these project specific classes, we may want to use new IRIS features. This creates the issue that I can't develop on Ensemble and only build and IRIS release. Not sure if you understand what I am getting at. The idea was that if a dev works on one of these projects, he/she only changes the server connection in Atelier, synchronise, compile and work. If that person needs to work on another project on Ensemble, the repeats the steps above. The git repo takes care of the source management, even though we are on different InterSystems products.

We use a local git repository on one of our servers.