Has anyone used UltraCompare inside Visual Studio 2010 and Team Foundation Server (TFS) as a MERGE tool? I've set it up as a compare tool, but I'm not sure of the parameters needed for Merge.
Your questions brings up one of my own, and if someone else doesn't answer it soon, I'll email tech support for an answer.
I am using TortoiseSVN. Instructions are quite clear in the Version Control Support help for UltraCompare Professional on how to get it set up as the Diff viewer, but there is nothing available for the Merge Tool that I can find.
Also, there seem to be quite a lot of command line options for compare/diff, but I'm not seeing any "merge" command line parameters, which seems to suggest that this may not be possible. For now, I'm still using TortoiseMerge, but I'd rather use UltraCompare if possible.
I am using TortoiseSVN. Instructions are quite clear in the Version Control Support help for UltraCompare Professional on how to get it set up as the Diff viewer, but there is nothing available for the Merge Tool that I can find.
Also, there seem to be quite a lot of command line options for compare/diff, but I'm not seeing any "merge" command line parameters, which seems to suggest that this may not be possible. For now, I'm still using TortoiseMerge, but I'd rather use UltraCompare if possible.
That's not 100% correct. The help page Command Line Options lists also -rom ... read only merge mode.rhapdog wrote:but I'm not seeing any "merge" command line parameters, which seems to suggest that this may not be possible.
But I think, there is a little misunderstanding. In some other comparison tools there is a "compare only for differences mode" and a "compare and merge mode". UltraCompare always allow merging differences on comparison. Differences can be always merged from first to second, or from second to first or both at same time. The exception is read only merge mode where UC creates a copy of first file with name of third file, loads the third file into left pane and second file into right pane and allows merge operations only from right to left pane (second to third file).
I'm not familiar with version control systems. For merge option of the version control system either same options as for a pure difference comparison can be used if the version control systems expects that a merge is done into first or second file, or the -rom option is used if the merge must be done into a new file.
Thanks Mofi. Perhaps if I knew more about the core workings of Version Control, I would have already figured this out. I basically use the SVN to keep incremental backups of my personal work, since I am retired. I always worked as a "one man show" as a programmer, and never on a team, so merging was never an issue for me in the past.
@sdude: Perhaps sending the question to IDM to their support email could render an answer for you. The email is in a link at the top of the forums. I'm afraid that we users won't be able to answer this one for you.
@sdude: Perhaps sending the question to IDM to their support email could render an answer for you. The email is in a link at the top of the forums. I'm afraid that we users won't be able to answer this one for you.
A 'merge' operation (when talking about version control systems) involves four files, and typically occurs in a couple a of situations:
1) when you make changes to a file that someone else has also made changes to and committed those changes back into the VCS (so your modified file doesn't contain the changes made by the other person)
2) when separate branches that have been independently modified need to be merged (such as when you need to incorporate bug fixes made into a maintenance branch into a branch where feature work was being done)
The four files involved are:
1) the common base for the modified files
2) the file with modifications made by the other person/on the other branch
3) the file with modifications you made/changes made on the current branch
4) the 'output' file that contains the merged changes (which might consist of changes automatically brought in by the tool if there is no conflict for the change, areas marked for conflict resolution, or changes that were manually made because of conflicts the tool could not automatically resolve).
Just being able to move differences between two files being compared is not the same thing as a merge operation. The common base file is needed so the tool can determine where there's a conflict.
1) when you make changes to a file that someone else has also made changes to and committed those changes back into the VCS (so your modified file doesn't contain the changes made by the other person)
2) when separate branches that have been independently modified need to be merged (such as when you need to incorporate bug fixes made into a maintenance branch into a branch where feature work was being done)
The four files involved are:
1) the common base for the modified files
2) the file with modifications made by the other person/on the other branch
3) the file with modifications you made/changes made on the current branch
4) the 'output' file that contains the merged changes (which might consist of changes automatically brought in by the tool if there is no conflict for the change, areas marked for conflict resolution, or changes that were manually made because of conflicts the tool could not automatically resolve).
Just being able to move differences between two files being compared is not the same thing as a merge operation. The common base file is needed so the tool can determine where there's a conflict.
mwb1100, thanks for this additional information.
Well, UC supports also a 3-Way Text Compare which can be initiated also from command line.
The second file loaded into middle pane should be common base to merge the differences from first and third file into this file.
After merging the changes to second file using the commands in menu Merge or in context menu or the symbols between the panes, clicking into middle pane to make it active pane and using File - Save As makes it possible to save the file with the changes from first and second file with a new name.
So the merge should not be a problem. But how to tell the version system which file contains the merge output could be a problem.
Well, UC supports also a 3-Way Text Compare which can be initiated also from command line.
The second file loaded into middle pane should be common base to merge the differences from first and third file into this file.
After merging the changes to second file using the commands in menu Merge or in context menu or the symbols between the panes, clicking into middle pane to make it active pane and using File - Save As makes it possible to save the file with the changes from first and second file with a new name.
So the merge should not be a problem. But how to tell the version system which file contains the merge output could be a problem.
Here is a URL that has several compare/merge parameters for other tools, but it doesn't mention UltraCompare: diff/merge configuration in Team Foundation - common Command and Argument values. Does anyone have some ideas on the correct parameters to merge?
This is a sample TFS page where the Operation can be set to Merge and the Command set to the UltraCompare executable. However, I don't know the best way to set up the arguments.
![]()
BTW, for compare, I have the parameters arguments: %1 %2 -t --ne -B -b -lt
This is a sample TFS page where the Operation can be set to Merge and the Command set to the UltraCompare executable. However, I don't know the best way to set up the arguments.
![](http://www.coodesoft.com/images/compare_in_tfs3.png)
BTW, for compare, I have the parameters arguments: %1 %2 -t --ne -B -b -lt
Without being able to test anything below, I suggest following for diff:
For a 2-way merge I suggest:
I don't know if -title1 and -title2 work with option -rom at all. I have simply never tried it.
For a 3-way merge I think there is no possibility to call UltraCompare directly with the 4 files (3 input files + 1 output file for merged data). But it should be possible to workaround this problem with calling a batch file instead of uc.com directly. The batch file must contain 2 lines:
The options to specify in TFS are:
The merges must be done in UltraCompare to file in middle frame and this file must be saved. The batch file should execute:
If it is not possible to specify different executables for diff and merge, it would be necessary to use the batch file as launcher of uc.com for all 3 operations. That is no problem as you can in this case specify as first parameter the information for the batch file which operation should be done. The batch file containing 3 different calls of uc.com passes then all other parameters from TFS to uc.com according to required operation as specified in first parameter.
Code: Select all
-B -b -lt-ne -t %1 %2 -title1 %6 -title2 %7
Code: Select all
-B -b -lt -ne -rom %1 %2 %4 -title1 %9 -title2 %7
For a 3-way merge I think there is no possibility to call UltraCompare directly with the 4 files (3 input files + 1 output file for merged data). But it should be possible to workaround this problem with calling a batch file instead of uc.com directly. The batch file must contain 2 lines:
Code: Select all
@copy /y %3 %4 >nul
@uc.com -B -b -lt -ne -3 %1 %4 %2 -title1 %5 -title2 %6 -title3 %7
Code: Select all
%1 %2 %3 %4 %7 %9 %8
Code: Select all
copy /y "base file" "merged file" >nul
uc.com -B -b -lt -ne -3 "original file" "merged file" "modified file" -title1 "original file label" -title2 "merged file label" -title3 "modified file label"
- 1
Thank goodness for this post and Mofi.
I made the bat file that he suggested, but found that where I merged lines the carriage returns didn't always work out right. In the end I found that this worked:
Also, to return to TFS, just close UC with the red cross (top right) and say yes to the save file prompt.
I'm not sure that TFS is giving the correct parent file in %3 though...
I made the bat file that he suggested, but found that where I merged lines the carriage returns didn't always work out right. In the end I found that this worked:
Code: Select all
@copy /y %3 %4 >nul
@uc.com -3 %1 %4 %2 -title1 %5 -title2 %6 -title3 %7
I'm not sure that TFS is giving the correct parent file in %3 though...