Book a Demo

Author Topic: Version control philosophy  (Read 4034 times)

magnus-e

  • EA Novice
  • *
  • Posts: 9
  • Karma: +0/-0
    • View Profile
Version control philosophy
« on: April 23, 2008, 09:49:16 pm »
We are just starting to use EA and is having a little bit of a problem to figure out how to best set up version control.
We have a number of people that need to perform modeling (within the same model!) at the same time.
Right now we have created a shared project were each model as well as the packages below each model are all separate configuration management items (each of them are exported/inported from the CM-system when you check-in / check-out).

This works fine until you like to create "common repository packages" for actors or commonly used classes etc. Since relationships seem to be stored together with the object from were the "arrow orginates" we all the time have to check out the actor package when we add an actor to a new interaction diagram (since we need to add a new arrow from the actor to another element of some kind) and this is problematic since only ONE person can have it checked out at a time  :-[

How are other users handling this kind of problems?

One could in theory decide to not version manage this kind of frequently shared repositories but as soon as not the whole model is version controled I think one largly looses the point with using version control at all.. Also EA with only a data base as storage for the work seem risky in a multiuser environment - anybody can by misstake for instance remove important work and restoring an old backup version of the database is rarly an alternative since all work after the restore date/time would be lost...

The prefered solution (as I see it) would be if multiple users could check-out the same package and EA contained an auto-merge function that could handle any conflicting edits.
One could also consider to be able to do version control on a finer granularity than packages (single object or diagram?) and allow a mode were each change automatically check-in & check-out from the CM-system this way keeping the lock time short)...

All sugestions about how to handle the problem today (as well as thought about future improvements for the EA team) are appreciated!

We are right now using version 6.5 but are in the process to migrate to 7.1 and we use Perforce as CM system.
« Last Edit: April 24, 2008, 02:33:50 pm by magnus-e »

Martin Terreni

  • EA User
  • **
  • Posts: 672
  • Karma: +0/-0
  • Sorry, I can't write
    • View Profile
Re: Version control philosophy
« Reply #1 on: April 26, 2008, 04:35:47 am »
The solution in EA right now for single element locking is, unfortunately, enabling EA security. It is a PITA but maybe you could use VC for all but the shared packages.
For the shared packages use security and auditing, but don't for lock for editing (else it will force it for the whole repository) and notice your users that if they don't want any one else messing with the use vase/actor they are editing right now - they should lock it.
Recursion definition:
If you don’t understand the definition read "Recursion definition".

DanG83616

  • EA User
  • **
  • Posts: 180
  • Karma: +0/-0
    • View Profile
Re: Version control philosophy
« Reply #2 on: May 02, 2008, 05:01:41 am »
I have a realted problem. I've marked package files for single open in p4. My problem is that if another developer has their component checked out, I cannot "get latest..." on it. I can get "get latest..." on packages that are not currently checked out. This seems like a bug because viewing should be fine even if checkouts are disabled.

My plan is to allow for multiple opens and hope for the best when it comes time to integrate. Is there a better way?

DanG83616

  • EA User
  • **
  • Posts: 180
  • Karma: +0/-0
    • View Profile
Re: Version control philosophy
« Reply #3 on: May 03, 2008, 06:02:15 am »
Ah, now I see the issue. I anticipated difficulty with merging xmi so I configured p4 for single open on the package files. That had the side effect that I could not "get latest..." if the package was currently open by another developer. Having undone that, I can see that I can get the package but EA prevents a check out.

One workaround is to use an instance of the common artifact rather than a link. This way you can define a "class" of artifact in the common package and the populate your various models with instances of it. The relationship is then to the instance in the local mode rather than to the class in the common pacakge.

The down side is that EA doesn't seem to keep track of the one-way "instance of" relationship between instance and class. Changes to the common artifact will not propagate to the instances created prior to the change. A nice side effect of using an instance is that you can put more than one on a diagram. I'm using that approach with composite diagrams where the composite actually utilizes two instances of a type of component. I just wish the instance-of realltion were preserved.

DanG83616

  • EA User
  • **
  • Posts: 180
  • Karma: +0/-0
    • View Profile
Re: Version control philosophy
« Reply #4 on: May 24, 2008, 07:52:49 am »
I started a "Cannot on the load p4 locked packages" topic in the Bugs and Issues area. <<Midnight>> pointed out that it would concentrate the comments into one place.

Thanks, DanG