RCS on Windows - rcsmerge always fails

妖精的绣舞 提交于 2021-01-29 04:55:41

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!