Following a blog, I created a batch file, wm.bat:
\"d:\\svnroot\\external\\winmerge\\WinMerge.exe\" /B /WAIT \"d:\\svnroot\\external\\winmerge\\WinMergeU.exe
I had 3 issues with the simple .bat file, especially when the revision didn't match the one in the working directory:
So I ended up wrapping a little PowerShell into the .bat file to work around these issues:
;@echo off
;set leftdesc=%~3
;set rightdesc=%~5
;set leftfile=%~6
;set rightfile=%~7
;Findstr -rbv ; %0 | powershell -c -
;goto:sCode
&{
$leftExt, $rightExt = ($env:leftdesc, $env:rightdesc) -replace '.*([.]\w+).*','$1'
if ($env:leftfile.EndsWith($leftExt)){
$leftFile = $env:leftfile
}else{
$leftFile = Join-Path $env:temp ((Split-Path $env:leftfile -Leaf) + $leftExt)
Copy-Item $env:leftfile $leftFile -Force
}
if ($env:rightfile.EndsWith($rightExt)){
$rightFile = $env:rightfile
}else{
$rightFile = Join-Path $env:temp ((Split-Path $env:rightfile -Leaf) + $rightExt)
Copy-Item $env:rightfile $rightFile -Force
}
$descriptions = '/dl "' + $env:leftdesc + '" /dr "' + $env:rightdesc + '"'
$fileNames = '"' + $leftFile + '" "' + $rightFile + '"'
start 'C:\Program Files (x86)\WinMerge\WinMergeU.exe' ('/e /u ' +$descriptions + ' ' + $fileNames)
}
;:sCode
;goto :eof
Thanks to Walid Toumi for the wrapper.