Change expressions and flows on merge

By André Siébra on 7 Aug 2015
I dont know if this idea has already been posted before (I bet it was...) Anyway, a fact is that when 2 developers are working on the same screen the merge is a heck... that's because there is not possible to merge parts of the flow/code.

If I could only select the items I want to merge in the merge window instead of select the entire Action/Screen it would be awesome. Actually, I think its an essencial funcionality, and I dont know why its not already implemented.
Justin James8 Aug 2015
I'm pretty sure you can select specific Screen actions on the merge.

J.Ja
André Siébra10 Aug 2015
Yes Justin. But I mean to select only specific actions on a flow (not screen actions). Something like this:



I should be able to choose which items I want to keep. This is a very common scenario when 2 devs are working on the same screen/action. I know that is not a good approach, but sometimes is inevitable.

Justin James10 Aug 2015
Andre -

How exactly should that work? How will it know what should be connected to where? That only works if the actual flow itself has common points.

I can say that I've worked on some fairly large development teams and this scenario literally did not come up once in YEARS.

J.Ja
André Siébra11 Aug 2015
Justin,

well.. I really dont know how this scenario never came up to you, but the projects I've worked we always got this.

Take this scenario:

- Developer A deletes a combobox of a screen X and drags an agregate on its preparation flow. 
- Developer B include a textbox in the screen X and deletes an IF on its preparation flow.
- Developer A publish your version
- Developer B publish your version
- Service Studio detects a conflict and open the merge and compare window to Developer B.

Now I ask to you, how to solve this conflict?

In the merge and compare window I can only select witch screen or preparation I want to keep, not the specific changes inside each one.

My idea is implement something like Visual Studio merge tool. 
Justin James11 Aug 2015
Andre -

The merge conflict can only be resolved *some* of the time like this. Imagine these scenarios:

* Nested for loops get reversed by DEV A, while DEV B has added a new nesting level
* IF branches get swapped by DEV A while DEV B has added additional logic within the "True" branch
* Significant changes to the flow of logic

Basically... anything that impacts logic flow is a disaster on a merge. There's no good way to identify the things to merge.

Bottom line: this is an organizational issue that is not well-solved with technical tools.

J.Ja
André Siébra11 Aug 2015
Justin,

I got your point. However, we cant say "there's a good way to identify the things to merge", because there is. Maybe I was not clear... but it's perfectly possible, see: (In example below I'll use the merge and compare with another version tool from Service Studio)
  1. First the Service Studio shows the compare and merge window, that allows me only to select the WebScreen/Actions that I want to keep.


         2.  Double click on the Employee_MeProfile webscreen to see the compare result of both screens:


I made 2 changes: removed the birthday date and changed the IF expression. But I want to take only the changes made to the second one from The other version. If I could only edit the expression or copy-paste these changes from The other version to Your version frame, the problem would be solved.

       3.  The same works for actions.. Double click to open the Preparation action:


I removed the highlighted items above. All I want is only take the Success feedback_message from The other version. Again, If I could only copy-paste this changes from The other version to Your version frame, the problem would be solved.

Its very simple and would be better if by clicking on the highlighted areas it automatically bring that changes.

Anyway, It would not be an automatic process. The developer should select witch items he wants to keep from each version.

I think that this would be a very useful feature so I hope I've explained right. :)