Windows上的RCS - rcsmerge总是失败

时间:2012-10-05 14:31:36

标签: version-control rcs three-way-merge

我正在使用官方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错误消息。

2 个答案:

答案 0 :(得分:0)

您好像错过了diff3.exe中的%PATH%二进制文件。虽然似乎Purdue包提供了diff3的源代码,但它们并没有为您提供Win32二进制文件。

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

如果你还没有安装它,你可以从SourceForge的(古代)UnxUtils projectDiffUtils 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”的文本文件,位于与工作文件相同的目录中,其内容是目录路径,被视为链接到包含主文件的目录。链接允许多个“工作副本”共享“存储库”。)