2012-10-05 30 views
0

我使用官方Purdue RCS homepage的Windows版GNU RCS 5.7版。如果我使用rcsmerge(1)命令來合併來自不同分支的變化,我得到一個錯誤:Windows上的RCS - rcsmerge總是失敗

diff3.exe: subsidiary program failed 
每次

。有誰知道爲什麼會發生這種情況(至少10年前我已經看到過這個問題),以及解決方法是什麼? GNU當前的RCS版本5.8.1是否修復了它?如果是這樣,任何人都可以指向我的這個版本的Windows二進制文件?

UPDATE 2012-10-22:我已經將當前GNU diffutils 2.8.7中的等價物的Purdue分佈提供的diifutils(cmp,diff,diff3,merge)切換。這可以消除subsidiary program failed錯誤,但現在每次調用rcsmerge或diff3時,現在都會給我The filename, directory name, or volume label syntax is incorrect.兩次。這似乎是一個Windows錯誤消息。

回答

0

看起來好像您錯過了二進制文件%PATH%。雖然Purdue軟件包似乎提供了diff3的源代碼,但它們並沒有提供給你一個Win32二進制文件。

如果您已經從某個其他來源安裝diff3.exe,請更新您的路徑以包含其安裝位置,或者(理想情況下)將diff3.exe二進制文件移動到您的路徑中已命名的文件夾。

如果您還沒有安裝它,您可以從SourceForge的(古代)UnxUtils projectDiffUtils project獲取它。

+0

我確實從Purdue發行版安裝了diff3.exe(和diff.exe)。他們在rcs57pc1.zip/bin/win32。據我可以告訴錯誤消息正在由diff3.exe生成。 (我也有MKS工具包中diff&diff3的不兼容版本,但它們沿着$ PATH進一步走向,並且由Purdue版本'隱藏')。 – Max

+0

@Max - 您可以驗證您是否可以從CMD運行diff3?你能夠運行其他與diff相關的命令,比如'rcsdiff'嗎? – ghoti

+0

對於這兩個問題都適用! – Max

0

Eli Zaretskii爲RCS提供了Windows二進制文件,作爲他的ezwinports項目的一部分,文件號爲http://sourceforge.net/projects/ezwinports/files

此處的自述文件介紹了描述問題的原因。

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.

如果我記得正確,端口不幸丟失了Purdue版本的「僞符號鏈接」功能。 (一個快速定義,以便自成一體:僞符號鏈接是一個名爲「RCS」的文本文件,位於與工作文件相同的目錄中,其內容是目錄路徑,它被視爲鏈接一個包含主文件的目錄。鏈接允許多個「工作副本」共享一個「存儲庫」。)