2

我正在使用来自Purdue RCS 官方主页的适用于 Windows 的 GNU RCS 5.7 版。如果我使用 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错误,但现在The filename, directory name, or volume label syntax is incorrect.每次调用 rcsmerge 或 diff3 时正好给了我两次。这似乎是一条 Windows 错误消息。

4

2 回答 2

2

Eli Zaretskii 在http://sourceforge.net/projects/ezwinports/files上将 RCS 的 Windows 二进制文件作为其 ezwinports 项目的一部分。

那里的自述文件描述了您描述的问题的原因。

RCS-5.7-1:这是官方 RCS v5.7.13 源到 MS-Windows 的端口。我做这个端口是因为现有的 GnuWin32 端口被破坏:任何需要将另一个程序作为子进程(例如 rcsdiff)运行的 RCS 命令都会崩溃或产生错误消息,因为 Windows 版本的 spawn 中存在未处理的问题*库函数。

如果我没记错的话,不幸的是,该端口缺少 Purdue 版本的“伪符号链接”功能。(快速定义,以便自包含:伪符号链接是一个名为“RCS”的文本文件,与工作文件位于同一目录中,其内容是目录路径,将其视为指向包含主文件的目录。链接允许多个“工作副本”共享一个“存储库”。)

于 2016-02-06T20:25:58.667 回答
0

diff3.exe看起来好像您缺少%PATH%. 尽管 Purdue 软件包似乎提供了 diff3 的源代码,但它们并没有为您提供 Win32 二进制文件。

如果您已经diff3.exe从其他来源安装,请更新您的路径以包含其安装位置,或者(不太理想)将diff3.exe二进制文件移动到路径中已命名的文件夹中。

如果您还没有安装它,您可能可以从 SourceForge 的(古老的)UnxUtils 项目DiffUtils 项目中获得它。

于 2012-10-05T14:48:04.447 回答