2009-09-10 31 views
0

在Windows命令行和Cygwin bash的我可以執行以下沒有問題:爲什麼Cygwin CVS無法讀取Ruby/Perl腳本中的CVS密碼文件?

cvs login 
cvs -Q log -N -rVersion_01_00 

在同一目錄中的Ruby腳本包含以下內容:

`cvs login`; 
`cvs -Q log -N -rVersion_01_00`; 

當我在執行Ruby腳本Windows命令行我得到以下錯誤:

cvs log: warning: failed to open /cygdrive/c/Documents and Settings/za100744/.cvspass for reading: No such file or directory 

如果我在cygwin bash shell中運行腳本,我得到sam e輸出,我會手動輸入命令。

我不知道發生了什麼問題。 Ruby腳本生成的路徑是錯誤的,因爲它是一個cygwin路徑,但它直接在命令行上正確運行。我使用之際,cygwin的一部分CVS:

which cvs 
cvs is an external : C:\cygwin\bin\cvs.exe 

Ruby是一鍵安裝版本:

which ruby 
/cygdrive/c/Ruby/bin/ruby 

好像紅寶石下CVS無法解決/ cygdrive/C到c:但從cmdline可以正常工作。

Perl給了我完全相同的問題。

my $str = "cvs -Q log -N -r$cvs_tag|"; 
open(CVS_STATUS, $str) or die "\n##ERROR##"; 
+0

你的ruby/perl,他們是不是也來自cygwin? – 2009-09-15 13:30:38

+0

Ruby和perl不是Cygwin。 – Gerhard 2009-09-16 05:16:56

回答

1

使用windows native compiled CVS可以解決問題。這是不理想的,因爲我必須爲具有cygwin CVS的用戶發送一個cvs可執行文件,但它的優勢不是什麼。

1

它看起來像CVS不能創建文件,或者你的路徑是錯誤的。文件.cvspass是否存在?如果沒有,this page建議您嘗試創建一個空的.cvspass文件,然後運行您的命令。例如做

touch ~/.cvspass 

如果這沒有幫助,那麼問題可能與路徑有關。有幾種可能性; $HOME設置不正確,您的家庭目錄與\etc\passwd中的內容不匹配等。請參閱this tutorial瞭解一些故障排除步驟,以幫助確定問題。

+0

該文件存在並且可以訪問。看起來像紅寶石下的CVS不能解決/ cygdrive/C到'C:',但從cmdline工作正常。 – Gerhard 2009-09-10 08:01:52

0

在基於cygwin的perl腳本和內置工具(如rsync)中,我們遇到了一些與unix,混合和windows風格路徑有關的問題。例如。 rsync無法處理風型路徑。使用「cygpath.exe」工具正確調整它們。也許這是原因。

+0

該路徑是CVS可執行文件的內部路徑,因此cygpath.exe將無濟於事。但我正在提交未來使用的信息。 – Gerhard 2009-09-10 08:17:42