2009-09-10 56 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