Collaboration with Git in Atelier

Hello folks,

We’ve recently started using Ensemble as the engine of our business integration needs. While our team gain experience and knowledge in InterSystems platform, we have a consultant with expertise to help and guide the solution development process. But, one doubt remains: how to work with Atelier and Git in a collaborative way.
Git development flow and its strategies are not a problem, but we still could not find a way to use a single Dev environment to manage this scenario: 
To simplify, imagine a Git repository containing one namespace and an Atelier project also with all namespace files (Git working directory == Atelier Workspace).
We’re working with integration of different solutions (distinct business departments), but most of them communicates with the organization ERP. So, It’s not uncommon that one developer changes the same code in which another one is working - note: they’re working in two different features that share some “component”. 
Considering versioning approach, these solutions are related to distinct issues, belongs to their own development branch and must be delivered in different commits (maybe scheduled to different releases). 
Considering Ensemble Server architecture, as soon as one of them compile and test  the code, it’s synchronized to the server and all others are notified to update the local copy. Here, we risk to lose one developer’s work by overwriting local changes in the same file AND not tracking changes in Git as we don’t know who coded it... We may, also, have two developers working in the same solution, but in different classes. When this is the case we should synchronize the code using Git and not Ensemble server - once more, we should guarantee the authorship tracking and this is a Git responsibility.
Another challenging situation: if any developer wants to analyse another version of this solution and checkout to another branch / commit, it may accidentally overwrite server environment. 
I believe that the collaborative Git approach and the Ensemble server dependency, especially in the Dev environment due to the synchronization process, are somewhat incompatible. 
Maybe we’re still in the wrong mindset to solve this or we missed some simple concept that changes the whole perspective, but does anyone have a suggestion or can share experience to clear this kind of problem?
 

  • + 1
  • 1
  • 262
  • 4
  • 3

Answers

I strongly believe that the best approach to this problem is to use the "Git Flow" branching model. See https://nvie.com/posts/a-successful-git-branching-model/

Hi Fred, 

I had already read this article about the Git flow and policies to create a model of development.  Indeed, I read a lot of articles before posting this question here, but Git concepts are not exactly the problem. I believe Its more related to how Ensemble enviroment works versus Git structure.
Anyway, I appreciated your interest and contribution.

Hi Eduardo,

My comprehension of your use of Git and Ensemble is that all devs build on the same sever like this :

This is not the way to go.

I recommend to use this model where every devs have there own server :

Hello Guillaume,

really intersting... this architecture seems much more appropriate for the solution we're looking for. The issue now is about licensing and its impact ($$) in our team... 

I'll do some research and verify if it's practicable.

Thank you!

Comments

|I agree with Guillaume. We have been using this model (together with Git Flow) for more than a year now. It works very well.

Good to hear that, Fred. Probably we'll need some testimonies if this license stuff leads to budgeting changes. :-/