archimatetool / archi-modelrepository-plugin

coArchi - a plug-in to share and collaborate on Archi models.
153 stars 52 forks source link

Support for using Git directly (Example: Handling folder merge conflicts) #100

Closed MeKarsten closed 10 months ago

MeKarsten commented 5 years ago

Hi,

I am trying out the collaboration plugin since it provides good branching functionality and a good graphical view of merge conflicts. However, I have run into an issue, where I would like the possibility of using Git directly.

The issue is when restructuring folders in the project (inside Archi). An example is when merging a branch containing modifications to a component in a folder now moved in the branch being merged into. The result is that a conflict is detected and an option for selecting 'ours' or 'theirs' is presented. Resolving that conflict by selecting either option results in that the previously moved folder is created again, which creates a folder without 'folder.xml' with the old ID identical to the moved folder ID.

Since the above did not work, I tried to merge manually using Git directly. Git solves this correctly, but the project (.archimate file) is not updated since this was not done through Archi.

The above is simply an example of situations where using Git directly might be useful. Are there anyway this can be done today? Can I trigger updating the project file somehow?

My goal is to have a way to be able to use Git directly while still having the Grafico functionality and the diff view in Archi.

Edit: A workaround used with Archi in version 4.3.3 with the collaboration plugin in version 0.4.0. (Reproduced with Archi 4.4.0 and plugin 0.5.1) I found a workaround but with some strange issues. The workaround is to first merge the branch using Git directly. Then do the same merge inside Archi, and as a last step undo the latest commit from Archi. The strange issue is when merging inside Archi. Folders merged from the other branch being merged are removed. Undoing the latest commit restores the removed folders and leaves the project file in a state reflecting the files (Grafico) under version control by Git.

jbsarrodie commented 5 years ago

Hi,

The issue you faced is known and related to git unable to detect some files being moved, but happens so rarely that for the moment we've not started to work on it (this requires additional post merge work).

In such situation (as you did) using git command directly is the most effective solution. As you noticed, doing this leads to a situation where Archi doesn't reload the model from xml files. If you want to force that, you have two options:

FlightControl-User commented 4 years ago

I am having actually the same issue. Moved folders in the master branch and did commit and publish. In the meanwhile, a person was editing in a branch a state of the repo which as older, so this repo state did not know about the moved folders. Once his changes were done, we tried to merge his repo state into the master. And tataa, the error as a result. Now trying to fix this using the actions as described above.

So trying to merge the models using github directly. And then rebuild the workspace from that.