我正在使用官方Purdue RCS homepage的GNU RCS 5.7版for Windows。如果我使用rcsmerge(1)命令合并来自不同分支的更改,则会收到错误:
diff3.exe: subsidiary program failed
每一次。有谁知道为什么会发生这种情况(我已经看到至少10年前讨论过这个问题)以及解决方法是什么? GNU当前的RCS版本5.8.1是否修复了它?如果是这样,有人可以指向我发布此版本的Windows二进制文件吗?
更新2012-10-22:我已经将Purdue发行版提供的diifutils(cmp,diff,diff3,merge)切换为当前GNU diffutils 2.8.7中的等价物。这消除了subsidiary program failed
错误,但现在每次调用rcsmerge或diff3时都会给我The filename, directory name, or volume label syntax is incorrect.
两次。这似乎是Windows错误消息。
答案 0 :(得分:0)
您好像错过了diff3.exe
中的%PATH%
二进制文件。虽然似乎Purdue包提供了diff3的源代码,但它们并没有为您提供Win32二进制文件。
如果您已经从其他来源安装了diff3.exe
,请更新您的路径以包含其安装位置,或者(理想情况下)将diff3.exe
二进制文件移动到路径中已命名的文件夹中。
如果你还没有安装它,你可以从SourceForge的(古代)UnxUtils project或DiffUtils project获得它。
答案 1 :(得分:0)
Eli Zaretskii在http://sourceforge.net/projects/ezwinports/files为他的ezwinports项目提供了RCS的Windows二进制文件。
那里的自述文件描述了您描述的问题的原因。
RCS-5.7-1:这是MS-Windows官方RCS v5.7.13源代码的端口。我做了这个端口是因为现有的GnuWin32端口坏了:任何需要运行另一个程序作为子进程(例如,rcsdiff)的RCS命令会崩溃或产生错误消息,因为Windows版本的spawn中出现了未解决的问题*图书馆职能。
如果我没记错的话,遗憾的是错过了Purdue版本的“伪符号链接”功能。 (快速定义,以便自包含:伪符号链接是名为“RCS”的文本文件,位于与工作文件相同的目录中,其内容是目录路径,被视为链接到包含主文件的目录。链接允许多个“工作副本”共享“存储库”。)