Where is the Merge Result file stored?
Moderator: SourceGear
Where is the Merge Result file stored?
I have a question about how Vault handles the Merge Result file when performing a merge. I did Merge Branches, with Automatic Merge requested, and now I have a bunch of files in Pending Changes. When I select 'Show Merge', I would assume that SGDM is invoked with the /result file (ie, the Merge Result file) being the local file in my working directory. However, sometimes it is, and sometimes it's a temp file in %AppData%. It is pretty confusing because when I make changes using SGDM and select 'Save', the changes get saved to the temp file, not to my local copy. Apparently the local copy doesn't get updated until I actually do a checkin...which means that I can't actually _compile_ the file to test it until I first check it back in, which doesn't work for me.
Is there something I'm missing?
Is there something I'm missing?
I ran a test and found my changes in the working folders as well after I had went through the merge, but before I checked the file in. Can you show me some screenshots that show what's going on in your case? Are you maybe not getting completely through the merge? We may have done different things as well so that I'm not showing the same result. If you prefer to send those screenshots instead of posting, send an email to support at sourcegear.com (attn: Beth).
Requested example
Here's some more info on an example that I saw today:
I performed a merge (using an external merge utility, Araxis Merge), and then saved my merge result & exited the merge tool. When I went to compile the resulting file, my changes weren't there. So I performed 'Show Merge' again and it appears that Vault is passing Araxis Merge a temp filename as the %DEST_PATH%, rather than the file in my working directory.
In the Tools->Options->Diff/Merge pane, I have the following configuration:
Program:
C:\Program Files\Araxis\Araxis Merge v6.5\compare.exe
Arguments:
/wait /3 /a2 /title1:"%WORKING_LABEL%" /title2:"%DEST_LABEL%" /title3:"%OTHER_LABEL%" "%WORKING_PATH%" "%BASELINE_PATH%" "%OTHER_PATH%" "%DEST_PATH%"
and when I use Process Explorer to display the command line that Vault actually used, I get the following (line feeds inserted):
"C:\Program Files\Araxis\Araxis Merge v6.5\compare.exe"
/wait /3 /a2 /title1:"Target File" /title2:"Merge Result" /title3:"Origin File"
"C:\Users\stevek\AppData\Local\Temp\tmpC6FC.tmp"
"C:\Users\stevek\AppData\Local\SourceGear\Vault_1\Client\9E3E77FA-7DE0-4CF9-BDE8-F763F6F6F261\stevek\_sgvault\1542926855\19334_mb_baseline"
"C:\Users\stevek\AppData\Local\SourceGear\Vault_1\Client\9E3E77FA-7DE0-4CF9-BDE8-F763F6F6F261\stevek\_sgvault\1542926855\19334_mb_patches"
"C:\Users\stevek\AppData\Local\SourceGear\Vault_1\Client\9E3E77FA-7DE0-4CF9-BDE8-F763F6F6F261\stevek\_sgvault\1542926855\19334_undo"
It seems that for %DEST_PATH%, Vault is supply this "undo" file. Why???
Also, I don't know if this is relevant, but I notice that when Vault is configured for an extern Merge tool, it never prompts "Do you want to resolve the Merge Status?", like it did when I was using the default SGDM. Is Vault playing some games where it only copies my merge result into the working directory when I resolve the merge??
I performed a merge (using an external merge utility, Araxis Merge), and then saved my merge result & exited the merge tool. When I went to compile the resulting file, my changes weren't there. So I performed 'Show Merge' again and it appears that Vault is passing Araxis Merge a temp filename as the %DEST_PATH%, rather than the file in my working directory.
In the Tools->Options->Diff/Merge pane, I have the following configuration:
Program:
C:\Program Files\Araxis\Araxis Merge v6.5\compare.exe
Arguments:
/wait /3 /a2 /title1:"%WORKING_LABEL%" /title2:"%DEST_LABEL%" /title3:"%OTHER_LABEL%" "%WORKING_PATH%" "%BASELINE_PATH%" "%OTHER_PATH%" "%DEST_PATH%"
and when I use Process Explorer to display the command line that Vault actually used, I get the following (line feeds inserted):
"C:\Program Files\Araxis\Araxis Merge v6.5\compare.exe"
/wait /3 /a2 /title1:"Target File" /title2:"Merge Result" /title3:"Origin File"
"C:\Users\stevek\AppData\Local\Temp\tmpC6FC.tmp"
"C:\Users\stevek\AppData\Local\SourceGear\Vault_1\Client\9E3E77FA-7DE0-4CF9-BDE8-F763F6F6F261\stevek\_sgvault\1542926855\19334_mb_baseline"
"C:\Users\stevek\AppData\Local\SourceGear\Vault_1\Client\9E3E77FA-7DE0-4CF9-BDE8-F763F6F6F261\stevek\_sgvault\1542926855\19334_mb_patches"
"C:\Users\stevek\AppData\Local\SourceGear\Vault_1\Client\9E3E77FA-7DE0-4CF9-BDE8-F763F6F6F261\stevek\_sgvault\1542926855\19334_undo"
It seems that for %DEST_PATH%, Vault is supply this "undo" file. Why???
Also, I don't know if this is relevant, but I notice that when Vault is configured for an extern Merge tool, it never prompts "Do you want to resolve the Merge Status?", like it did when I was using the default SGDM. Is Vault playing some games where it only copies my merge result into the working directory when I resolve the merge??
We haven't tested Vault with Araxis, but only with our own merge tool. There could be some difference with how Araxis works.
Generally, with our own merge tool, Vault first copies the files to a temp directory and then the merge result after the merge is done, but before it's committed, is copied to the working directory.
I'll have to download this when I can and try this out and can get back to you then.
Generally, with our own merge tool, Vault first copies the files to a temp directory and then the merge result after the merge is done, but before it's committed, is copied to the working directory.
I'll have to download this when I can and try this out and can get back to you then.
I don't think you need to worry about Araxis. I copied the command lines involved because it shows that Vault is supplying a temp file for %DEST_PATH%. Just treat whatever Araxis does as a black box, and look at how Vault is expanding the %% variables in the command line. If the intention is that Vault will have SGDM or whatever merge program write to the temp file, then in my experience there are times Vault doesn't write this temp file back to the working directory.
Under what cases will Vault supply the local file in the working directory for %DEST_PATH, and under what cases does it supply a temp file? I have seen both cases. And then there's the question of whether Vault _always_ copies the temp file to the working directory, or not. The fact that the temp file is named "12345_undo" seems to indicate to me that Vault is not planning to write it back, with a name like 'undo'.
And there's also my question regarding 'do you want to resolve the merge status', which is also independent of Araxis.
Thanks,
Steve
Under what cases will Vault supply the local file in the working directory for %DEST_PATH, and under what cases does it supply a temp file? I have seen both cases. And then there's the question of whether Vault _always_ copies the temp file to the working directory, or not. The fact that the temp file is named "12345_undo" seems to indicate to me that Vault is not planning to write it back, with a name like 'undo'.
And there's also my question regarding 'do you want to resolve the merge status', which is also independent of Araxis.
Thanks,
Steve