"Resolve Merge" in 3rd-party diff/merge
Moderator: SourceGear
"Resolve Merge" in 3rd-party diff/merge
When using a 3rd-part merge tool (ie, Beyond Compare 3), it doesn't ask me to "Resolve Merge Status" like it does with DiffMerge or sgdm.exe -- how does a 3rd party app indicate to Vault to do this?
Re: "Resolve Merge" in 3rd-party diff/merge
After you perform the merge and have the changes saved to disk, are you still getting a 'Needs Merge' status?
If so, what happens if you perform a Get on that file, but select the option to 'Do No Overwrite/Merge Later'? Does it change its status to edited?
If so, what happens if you perform a Get on that file, but select the option to 'Do No Overwrite/Merge Later'? Does it change its status to edited?
Beth Kieler
SourceGear Technical Support
SourceGear Technical Support
Re: "Resolve Merge" in 3rd-party diff/merge
I guess I'm asking the more general question of how Vault determines whether to prompt the user to "Resolve Merge Status?" once the merge utility terminates. Does Vault check the date/time stamp of the file %DEST_PATH%, and only prompt for "Resolve Merge Status?" if that file has been updated? Or does it use some other mechansim?
Re: "Resolve Merge" in 3rd-party diff/merge
According to other posts from SG staff, it only does it for its own diff/merge products, since it can't be sure that the third-party products have actually performed the merge when the program that they call has exited.
Re: "Resolve Merge" in 3rd-party diff/merge
The prompt to resolve occurs when the merge process finishes. I don't think anything else will trigger that. You can right-click the item and select Resolve Merge Status.
Beth Kieler
SourceGear Technical Support
SourceGear Technical Support
Re: "Resolve Merge" in 3rd-party diff/merge
But that's exactly my question -- how does Vault define "merge process finishes"?
Re: "Resolve Merge" in 3rd-party diff/merge
Vault watches the actual exe that it starts. When that exe exits, then Vault will prompt for the resolve. Is this a case where beyond compare never exits?
Subscribe to the Fortress/Vault blog
Re: "Resolve Merge" in 3rd-party diff/merge
No, but the Resolve Merge prompt is only shown for DiffMerge.exe and SGDM.exe.
http://support.sourcegear.com/viewtopic.php?t=3387
http://support.sourcegear.com/viewtopic.php?t=3387
Re: "Resolve Merge" in 3rd-party diff/merge
Thanks, Greg. Once again, our users know the product better than me.
Subscribe to the Fortress/Vault blog
Re: "Resolve Merge" in 3rd-party diff/merge
So, again, I repeat my question -- how does Vault know to put up the "Resolve Merge" prompt? Is it specifically checking for the executable name "SGDM" or "DiffMerge" ? I tend to doubt that you would have hardcoded that into the client...
Re: "Resolve Merge" in 3rd-party diff/merge
After looking at the code, the only times that we bring up the resolve merge dialog is when the option for diff executable is blank. If you want a third party exe to launch, copy it over the Program Files\SourceGear\Vault Client\sgdm.exe file, and you should be prompted to resolve merge after the exe is finished.
Subscribe to the Fortress/Vault blog
Re: "Resolve Merge" in 3rd-party diff/merge
>After looking at the code, the only times that we bring up the resolve merge dialog is when the option for diff executable is blank.
But if that's true, why does it work for DiffMerge? I remember reading a forum post where someone from SG said that you specifically added "Resolve Merge" prompting for DiffMerge.
But if that's true, why does it work for DiffMerge? I remember reading a forum post where someone from SG said that you specifically added "Resolve Merge" prompting for DiffMerge.
Re: "Resolve Merge" in 3rd-party diff/merge
I'm obviously too tired to read code today. You're right. Here's the code.
Code: Select all
if ((app == null) || (app.Trim().Length == 0))
{
app = "%VAULT_EXE_DIR%/sgdm.exe";
bUsingSGDM = true;
}
else
{
string tmp = app.ToLower();
int n = tmp.IndexOf("sgdm", 0);
if (n != -1)
bUsingSGDM = true;
}
Subscribe to the Fortress/Vault blog
Re: "Resolve Merge" in 3rd-party diff/merge
This code still seems to be specific to SGDM. So what about DiffMerge?
Even apart from DiffMerge, why not have the client always prompt for "Resolve Merge" once the .EXE exits, IF the target file has been updated with a newer timestamp?
Even apart from DiffMerge, why not have the client always prompt for "Resolve Merge" once the .EXE exits, IF the target file has been updated with a newer timestamp?
Re: "Resolve Merge" in 3rd-party diff/merge
This is from the latest client, which ships with sgdm.exe (which is the executatble name for SourceGear DiffMerge).
The problems that we have all come from a lack of control over how other merge tools work. For example, Araxis Merge (if I recall correctly) returns immediately (starting another process to handle the actual merge window). This can all be boiled down to: We handled the case we can control, and did our best not to do something really bad in the cases we couldn't control.
The problems that we have all come from a lack of control over how other merge tools work. For example, Araxis Merge (if I recall correctly) returns immediately (starting another process to handle the actual merge window). This can all be boiled down to: We handled the case we can control, and did our best not to do something really bad in the cases we couldn't control.
Subscribe to the Fortress/Vault blog