问题
I'm using GNU RCS version 5.7 for Windows from the official Purdue RCS homepage. If I use the rcsmerge(1) command to merge changes from different branches, I get an error:
diff3.exe: subsidiary program failed
every time. Does anyone know why this should happen (and I have seen this problem discussed at least 10 years ago) and what the fix is? Does the GNU current RCS release 5.8.1 fix it? If so, can anyone point me to Windows binaries for this release?
UPDATE 2012-10-22: I have switched the diifutils(cmp, diff, diff3, merge) supplied with the Purdue distribution for the equivalents from the current GNU diffutils 2.8.7. This gets rid of the subsidiary program failed
errors, but now gives me The filename, directory name, or volume label syntax is incorrect.
exactly twice for each invocation of rcsmerge or diff3. This seems to be a Windows error message.
回答1:
Eli Zaretskii has Windows binaries for RCS as part of his ezwinports project at http://sourceforge.net/projects/ezwinports/files.
The README there describes the reason for the problem you describe.
RCS-5.7-1: This is a port of the official RCS v5.7.13 source to MS-Windows. I did this port because the existing GnuWin32 port was broken: any RCS command that required running another program as a subprocess (e.g., rcsdiff) would either crash or produce an error message, due to an unhandled problem in the Windows versions of the spawn* library functions.
If I recall correctly the port is unfortunately missing the "pseudo symlink" feature of the Purdue release. (A quick definition, so as to be self-contained: a pseudo symlink is a text file named "RCS", located in the same directory as the working file, and whose contents are a directory path, which is treated as a link to a directory containing the master file. Links allow multiple "working copies" to share a "repository".)
回答2:
It looks as if you're missing the diff3.exe
binary from your %PATH%
. And while it seems that the Purdue packages provide source code for diff3, they don't provide you with a Win32 binary.
If you've already installed diff3.exe
from some other source, update your path to include its install location, or (less ideally) move the diff3.exe
binary to a folder already named in your path.
If you haven't installed it, you can probably get it from the (ancient) UnxUtils project at SourceForge, or the DiffUtils project.
来源:https://stackoverflow.com/questions/12748493/rcs-on-windows-rcsmerge-always-fails