View Issue Details

IDProjectCategoryView StatusLast Update
0000697Subversion for OS/2 & eCSBugpublic2019-11-15 08:51
ReporterThomasikus Assigned Topsmedley  
PrioritylowSeverityminorReproducibilityalways
Status closedResolutionno change required 
PlatformThinkpad T43OSeComStationOS Version2.1
Summary0000697: Cannot use PMDiff as an external diff program with svn 1.7.21 (2015-08-10)
DescriptionCannot run PMDiff as an external 'svn diff' program. kdiff3 works.
Steps To ReproduceLocal svn server (svn://localhost). The file ASSOEDIT.TXT is in the working copy and has been modified.
Running
[d:\prevas\testsvnmapp]svn diff ASSOEDIT.TXT --diff-cmd D:/util/pmdiff/pmdiff.exe
Index: ASSOEDIT.TXT
===================================================================
svn: E000010: Error waiting for process 'D:/util/pmdiff/pmdiff.exe': No children

PMDiff never starts. kdiff3 will start properly:
[d:\prevas\testsvnmapp]svn diff ASSOEDIT.TXT --diff-cmd d:/apps/kdiff3/kdiff3.exe
Index: ASSOEDIT.TXT
===================================================================
svn: E000010: Error waiting for process 'd:/apps/kdiff3/kdiff3.exe': No children

The message is the same but kdiff3 starts and displays the files. Neither program is in the PATH, and both run perfectly from the command line. The error is in itself not severe since I have an alternative, but it could indicate some other problem.
Additional InformationI will gladly run any test you require.
TagsNo tags attached.
Attached Files

Activities

Thomasikus

2019-11-15 00:54

reporter   ~0003376

I have done some more testing of this and discovered that the reason PMdiff won't work as an external diff program with Subversion, is that Subversion gives the external diff program arguments that PMdiff cannot handle. A simple OS/2 command file, "get_args.cmd" discovers the arguments from Subversion:
svn diff ASSOEDIT.TXT --diff-cmd get_args.cmd
%1: -u
%2: -L
%3: "ASSOEDIT.TXT (revision 49)"
%4: -L
%5: "ASSOEDIT.TXT (working copy)"
%6: D:/Prevas/testsvnmapp/.svn/pristine/0a/0a6c1db129a705ff95f249f598097d630046872d.svn-base
%7: D:/Prevas/testsvnmapp/ASSOEDIT.TXT

These arguments work fine with kdiff3, but PMdiff expects only two filename arguments, andit cannot handle filenames separated by forward slashes (Unix-style). This is why PMdiff cannot be used directly as an external diff program with Subversion.

But it can be used indirectly. A simple REXX program, "xPMdiff.cmd", translates the forward slashes of the filenames into backslashes and calls PMdiff with the two filenames:
svn diff ASSOEDIT.TXT --diff-cmd xPMdiff.cmd
works perfectly and displays the two temporary files, though the titles supplied by Subversion are lost in this manner. The two files get_args.cmd and xPMdiff.cmd are included in this message in case they are of interest.
The conclusion is that this issue can now be closed. /Thomas
get_args.cmd (189 bytes)   
@echo off
rem Turn on echoing to see what the arguments are.
echo %%1: %1
echo %%2: %2
echo %%3: %3
echo %%4: %4
echo %%5: %5
echo %%6: %6
echo %%7: %7
echo %%8: %8
echo %%9: %9
get_args.cmd (189 bytes)   
xPMdiff.cmd (194 bytes)   
/* REXX */
parse arg sw0 sw1 '"' title1 '"' sw2 '"' title2 '"' fname1 fname2
bname1 = Translate(fname1,'\','/')
bname2 = Translate(fname2,'\','/')
'D:\util\pmdiff\pmdiff.exe' bname1 bname2
xPMdiff.cmd (194 bytes)   

Issue History

Date Modified Username Field Change
2019-09-01 20:48 Thomasikus New Issue
2019-11-15 00:54 Thomasikus File Added: get_args.cmd
2019-11-15 00:54 Thomasikus File Added: xPMdiff.cmd
2019-11-15 00:54 Thomasikus Note Added: 0003376
2019-11-15 08:51 psmedley Assigned To => psmedley
2019-11-15 08:51 psmedley Status new => closed
2019-11-15 08:51 psmedley Resolution open => no change required