如何使用Beyond Compare 3作为svn的diff3-cmd?

pax*_*977 10 svn beyondcompare3 three-way-merge

我看到这篇帖子解释了如何让BC3成为Subversion的差异工具......但是如何使用Beyond Compare 3进行3路合并/比较呢?

lia*_*amf 8

为此,请创建一个名为(例如)diff3wrap.bat的批处理文件,并在SVN配置中设置diff3-cmd以指向它.

以下diff3wrap.bat文件将完成这项工作.它为合并输出创建一个临时文件名,并在将合并的内容返回给SVN后将其删除.

@ECHO OFF

SET DIFF3="C:\Program Files\BeyondCompare3\BComp.exe"

REM Subversion provides the paths we need as the last three parameters
REM These are parameters 9, 10, and 11.  
REM Suitable titles for these three panes in the merge tool are in parameters 4, 6 and 8 respectively.


REM But we have access to only nine parameters at a time, so we shift our nine-parameter window
REM twice to let us get to what we need, thus changing the effective positions of the various parameters.
REM
SHIFT
SHIFT
SET MYTITLE=%2
SET OLDTITLE=%4
SET YOURTITLE=%6
SET MINE=%7
SET OLDER=%8
SET YOURS=%9
SET OUTPUTFILE=%OLDER%_%RANDOM%.merge

REM Call BeyondCompare to perform the actual merge
REM Note we give it a temporary output file and echo the output back out for SVN to use as the merged file
%DIFF3% /lefttitle=%MYTITLE% /centertitle=%OLDTITLE% /righttitle=%YOURTITLE% /outputtitle="Merge Output" %MINE% %YOURS% %OLDER% %OUTPUTFILE% 

if NOT %errorlevel% == 0 goto :mergenotcomplete

REM Merge complete. Echo the output to stdout for SVN to pick up as the result, then throw away the temporary file

TYPE %OUTPUTFILE%
del /f /q %OUTPUTFILE%
exit 0

:mergenotcomplete
exit 1
Run Code Online (Sandbox Code Playgroud)