【问题标题】:RCS on Windows - rcsmerge always failsWindows 上的 RCS - rcsmerge 总是失败
【发布时间】:2012-10-05 14:31:36
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    Eli Zaretskii 在 http://sourceforge.net/projects/ezwinports/files 的 ezwinports 项目中拥有 RCS 的 Windows 二进制文件。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我确实安装了来自 Purdue 发行版的 diff3.exe(和 diff.exe)。它们位于 rcs57pc1.zip/bin/win32 中。据我所知,错误消息是由 diff3.exe 生成的。 (我也有来自 MKS 工具包的 diff 和 diff3 的不兼容版本,但它们在 $PATH 中更进一步,并且被 Purdue 版本“隐藏”。)
      • @Max - 你能验证你实际上可以从 CMD 运行 diff3 吗?您是否能够运行其他与差异相关的命令,例如 rcsdiff
      • 嗯。 Searching Google,我看到定期提到这个错误可以追溯到 2000 年,从来没有提供过解决方案。所以唉,我必须放弃了,建议你升级你的操作系统(我使用FreeBSD作为我的桌面),或者切换到不同的VCS(我是git转换)。对不起,我帮不上忙!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多