Wednesday, April 23, 2008

Araxis Merge integration with TFS - Team System - Visual studio

I'm not a big fan of the built in Merge tool that comes with Microsoft's Team Explorer for Visual Studio.

 Microsoft's Team Explorer built in Merge tool for Visual Studio

I really prefer Araxis Merge interface much much more.
So I have search for a way to integrate it into Team Explorer.

I easily found James Manning's blog about diff/merge configuration in Team Foundation which explains very clearly how to use the "Configure User Tools" under Tools -> Options -> Source Control -> Visual Studio Team Foundation Server".

James tells you exactly what parameters you need to put in the Command's arguments:

/wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4

Configure Tool Window

And it really works:

Araxis' 3-Way Merge

BUT...

James's settings work only for Araxis Merge Professional Edition (that supports 3-way merge and compare)

So if you only have Araxis Merge Standard Edition licence (that support only 2-way merge and compare), you need a little bit different setting:

/wait /2 /title1:%6 /title2:%7 %1 %2 %4

and actually I also prefer changing the titles from Microsoft's defaults (Yours, Theirs) to "Source" and "Destination", so my final arguments are:

/wait /2 /title1:Source /title2:Destination %1 %2 %4

and it works! (using 2-way merge)

Araxis' 2-Way Merge

You just need to take into account that the 2-way isn't perfect as your first instinct would probably be to edit the Destination side, but you'll get a warning about "this file is read only". this is because Microsoft never intended that you will edit this file itself. They have created a fourth file (%4) which is the result of the merge.

You can workaround this by telling Araxis Merge to allow editing of the read only file.
This can be done on the specific file level:

Read Only alert 

Or globally by: View Menu -> Options -> Text Comparisons -> Editing -> Allow editing in read only files:

Araxis Options window

Anyway, even if you edit the "Source" file instead of the "Destination" file, Araxis will pass the saved file (if you click ctrl+s or the "save" button - Araxis save the current doc - meaning the doc where your cursor is in) to TFS.

It is a little dangerous as you might be on the wrong doc when saving.

You also have the option to just close the Araxis window without saving, which will pop up a window for you to decide which file you want to save as the merged file:

Save Merged File window

Conclusion:

If you can effort Araxis Merge Professional Edition - go for it.
If not - you can still integrate the Standard edition fairly well.

P.S.

There is one advantage in using the 2-way compare: when you have done lots of changes in one side - instead of copy all of them to the middle and then integrate the other side - you can right away integrate the less changed side into the other.

Just to let you know - You can use 2-Way merge on the Pro edition too.
Use the arguments I have supplied and it will work (because of the /2 flag)

another P.S.

You can find more Integration settings with other Source Control, Configuration Management and Other Applications in Araxis' Web Site

9 comments:

Tim Howland said...

Yup. Pretty sweet. What I'd like to figure out now, is what I had with my WinCvs/Araxis-Merge combo: the ability to load ALL the files that I changed into a singe Araxis Merge instance, so I can quickly review, close window, review, close window, review... instead of having to right-click compare each and every file. In WinCvs, I would highlight all the modified files, right-click > Diff and they would all load into Araxis Merge.

ablanco said...

Thanks

Anonymous said...

how about folder differences?

Catherine Sea said...

Thanks for the article.

Catherine Sea
http://www.scmsoftwareconfigurationmanagement.com/

Ismu the Dev said...

I've araxis merge 2001 version. These arguments doesn't work with it.

This is what I get when I see help by typing "compare /?"

http://4476248365215863308-a-1802744773732722657-s-sites.googlegroups.com/site/browsersynch/AraxisMergeCommandlineCompareUtilityv6.5.png?attachauth=ANoY7cqCCXFS9Lm96PISfpno-WVNw4O3JDkxpBEj60JhDkYkIs6NvIAtm87jUBYvoNF0nINDQFpknSs0h_hxn-kCB8Y-Pwevr8Dsj-lrYJzWx1lom8pR49L145beTr_5pbnkRv6YtNW2hhYIP9SpR1oWUcuKSwjJXLjln9wzADJQ1g_Nxt_CA42dU4rkM3MRHdsxUnfN7RXqud8oj2CjlxDd2-hFWNxp1Ef8fDKWRyC6wcf3i99kYNg%3D&attredirects=0

I will appreciate if you could give me help as what arguments should I give.

Ismu the Dev said...
This comment has been removed by the author.
Anonymous said...

The Compare parameters work with TFS 2010, but the Merge parameters do not seem to work. Are you aware of a difference between TFS 2008 and TFS 2010 in regards to the Araxis Merge parameters?

Timothee Howland said...

For the merge command for TFS 2010, try changing the last parameter from %4 to /result=%4

In other words:

/wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 /result=%4

I cannot remember where I found that.

Anonymous said...

thanks for share.