Почему Cygwin CVS не может прочитать файл паролей CVS в сценарии Ruby / Perl? - PullRequest
0 голосов
/ 10 сентября 2009

В командной строке Windows и Cygwin Bash я могу выполнить следующее без проблем:

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, я получаю тот же вывод, что и при вводе команд вручную.

Я понятия не имею, что происходит не так. Путь, сгенерированный сценарием Ruby, неверен, так как это путь cygwin, но он работает правильно непосредственно в командной строке. Я использую cvs как часть cygwin:

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

Ruby - это версия программы установки в один клик:

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

Похоже, что cvs в Ruby не может разрешить / cygdrive / c в c: но работает нормально из командной строки.

Perl дает мне точно такую ​​же проблему.

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

Ответы [ 3 ]

1 голос
/ 15 сентября 2009

Использование Windows собственного скомпилированного CVS решает проблему. Это не идеально, поскольку я должен отправить исполняемый файл cvs со сценарием для пользователей, у которых есть CVS Cygwin, но это лучше, чем ничего.

1 голос
/ 10 сентября 2009

Похоже, что CVS не может создать файл или ваш путь неверен. Файл .cvspass существует? Если нет, то на этой странице предлагает вам попробовать создать пустой файл .cvspass и затем запустить вашу команду. например делаем

touch ~/.cvspass

Если это не поможет, значит, проблема связана с путем. Есть несколько возможностей; $HOME установлен неправильно, ваш домашний каталог не совпадает с тем, что указано в \etc\passwd и т. Д. См. в этом руководстве , где описаны некоторые действия по устранению неполадок, которые должны помочь определить проблему.

0 голосов
/ 10 сентября 2009

У нас было несколько проблем с путями в стиле unix, mixed и windows в perl-скриптах на основе cygwin и во встроенных инструментах, таких как rsync. Например. rsync не может обрабатывать пути в стиле ветра. Используйте инструмент "cygpath.exe", чтобы правильно их настроить. Может быть, это причина.

...