Book a Demo

Author Topic: How to share a project and later merge changes?  (Read 8347 times)

mmo

  • EA User
  • **
  • Posts: 85
  • Karma: +0/-0
    • View Profile
How to share a project and later merge changes?
« on: July 16, 2014, 03:26:05 pm »
I have a question re. EA's capability to support parallelization of  development:

We are developing a Java application and need to speed up development to meet our deadline. For this we need to allow multiple users to share the same project (i.e. one or more XML file(s) via an SVN repository) and work in parallel.

Our project has a given package structure and the developers will work on different classes, but these classes will be in the same package (say, different services that are all in a package com.example.app.services) and also referencing other, shared classes (say, in packages like com.example.app.model, com.example.app.utils, etc.).

Is such a setup possible at all with EA? So far we only found options to check-in/-out packages, not individual files within packages. We also tested, whether it's feasible to merge the generated XML files manually using some diff-tool, but files differed so much and in so many widely dispersed places that this proved completely unrealistic.

We then to tried to define multiple project roots each holding the same package structure, but imports of packages fail, if a package with the same name already exists in an other model-tree.

So, the only option EA supports seems to be to work in different leaf packages and export/import these distinct packages to/from SVN (which effectively prevents working in parallel within the same package).

What options does EA provide to support any parallelization of development activities?

M.

-- we are using EA v10 (Corp. Edition)


Helmut Ortmann

  • EA User
  • **
  • Posts: 970
  • Karma: +42/-1
    • View Profile
Re: How to share a project and later merge changes
« Reply #1 on: July 16, 2014, 04:10:38 pm »
Hi,

in EA everything as a unique identifier (GUID). Therefore being the same thing isn't a matter of having the same name.

There are some means to support parallel working. Always keep in mind: Parallel development isn't an easy task with an model. Just try to understand the differences of two models. In code it's quite easy and straight forward.

Some thoughts about parallel development:
- A package is the smallest unit
- You may have two or more models to work on
- You have to merge different packages
- You may use different branches (svn) for different models

To make a good concept one has to know how parallel development should work. Are there a lot of changes over a long period?

If you use svn the easies way is to have your repository with packages under svn. Then make a branch and assign this branch to a new repository. Now you have two repositories where you independently can work. After finishing you have to merge the two models into your main line.

There are of course more ways to achieve your goal.

In this forum you'll find some threads about parallel development with different opinions.

Helmut
Coaching, Training, Workshop (Addins: hoTools, Search&Replace, LineStyle)

Bernie

  • EA Novice
  • *
  • Posts: 4
  • Karma: +0/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #2 on: July 17, 2014, 01:58:36 am »
Hi

With this in mind without working in paralllel, is there a simple method to merge one eap file with another without destroying the structure. i.e.
We are in the iddel if creating a large project for our distributed networkd.  Each the network database updated and we import the data via sripts and the use  of .xls files.  When I import the new data, the ild structure collapes if it has never been worked on.  Is there a script that would only show the new data lines etc without destroying the old graphics.  Even when we import and export xml, it is hard to determine which is the new data without looking at each elelment which are in the thousand.

Helmut Ortmann

  • EA User
  • **
  • Posts: 970
  • Karma: +42/-1
    • View Profile
Re: How to share a project and later merge changes
« Reply #3 on: July 17, 2014, 03:51:08 am »
Hi,

you may have two repositories with the same package structure.

The simplest way to synchronize a package is to export it in one repository and import it in the other repository.

EA also have a diff tool to see what are the differences between repositories or packages. I think it also supports manually merge.

Helmut

Coaching, Training, Workshop (Addins: hoTools, Search&Replace, LineStyle)

Bernie

  • EA Novice
  • *
  • Posts: 4
  • Karma: +0/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #4 on: July 17, 2014, 03:53:53 am »
Thanks, I'll try that.

mmo

  • EA User
  • **
  • Posts: 85
  • Karma: +0/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #5 on: July 17, 2014, 11:44:48 am »
Quote
...
In this forum you'll find some threads about parallel development with different opinions.

I spent like 15 minutes searching those threads using different keywords that came to my mind (parallel, merge, merging, reconcile, ...) but found nothing else. Do you by chance have some links or memorize any  terms used in those discussions so I can have a look?
M.

Gary

  • EA User
  • **
  • Posts: 84
  • Karma: +1/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #6 on: July 17, 2014, 05:00:07 pm »
You could use the design master/replication feature.
Create a design master
create n replicas
do work
merge replicas
resolve conflicts.

Dermot

  • EA Administrator
  • EA User
  • *****
  • Posts: 591
  • Karma: +7/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #7 on: July 18, 2014, 02:09:49 pm »
Re finding help on 'diff tool' See "Load other Baselines" covered on the Baseline Difference help page:
http://www.sparxsystems.com/enterprise_architect_user_guide/10/projects_and_teams/managingbaselines.html
In the Branch repository you will need to create a new baseline post the modifications. Then in the Trunk repository do a 'Baseline Merge' back from the Branch Baseline using 'Load other Baselines'.
« Last Edit: July 18, 2014, 02:12:14 pm by Dermot »

mmo

  • EA User
  • **
  • Posts: 85
  • Karma: +0/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #8 on: July 21, 2014, 08:43:52 pm »
Quote
You could use the design master/replication feature...
That seems to work (although I only tested with a trivial three classes model) but it doesn't work with branches already checked into a repository (one then has several replicas pointing to the same repository location, i.e. essentially two different versioning systems fighting each other).
One would thus have to take the branch to be worked on in parallel out of the versioning system, use the above mechanism and after synchronization one could then check it into the repository again. Somewhat tricky, error prone and defeating the purpose of the versioning system we already have in place. Will now try the other suggestion...   :-/


mmo

  • EA User
  • **
  • Posts: 85
  • Karma: +0/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #9 on: July 21, 2014, 10:37:34 pm »
Quote
Re finding help on 'diff tool' See "Load other Baselines" covered on the Baseline Difference help page:
http://www.sparxsystems.com/enterprise_architect_user_guide/10/projects_and_teams/managingbaselines.html
In the Branch repository you will need to create a new baseline post the modifications. Then in the Trunk repository do a 'Baseline Merge' back from the Branch Baseline using 'Load other Baselines'.
OK - that indeed worked - even or esp. with a repository in the background (if one does proper branching before and multiple version switchings during the process). But - boy - is this brittle and complicated for anything but that trivial example that I already mentioned.

And it will be a nightmare to keep users adhering to the proper preconditions, so that this will work afterwards.

Would be to nice, if EA would take care of the necessary branching and xml-file accessing in the background.

The comparison view showing ALL those gory diffs and details to me look more like a debugging aid for those who had to program this.

The graphical/visual "diff" for diagram looks really nice, but - alas - if the place of an added object is taken in the diagram it simply piles up all new components in the upper left corner, which causes quite some mess and manual rework afterwards.

Still not sure if this will fit our bill and really be workable and not more of a pain rather than help...  :-/

Gary

  • EA User
  • **
  • Posts: 84
  • Karma: +1/-0
    • View Profile
Re: How to share a project and later merge changes
« Reply #10 on: July 21, 2014, 11:21:36 pm »
We got rid of the SVN repository for storing the xml per package approach. We used a design master/replica approach and the built in baseline feature of EA.Then placed the baseline file in the SVN repository. Thus:
Create a design master (place in repository)
create a baseline in EA Project->Package Baselines
create n replicas
do work
merge replicas
resolve conflicts.
Create a baseline in EA.
Export baseline to file.
Place baseline file in SVN repository

Gary