Ошибка при чтении вывода команды "svn log" - PullRequest
1 голос
/ 24 ноября 2010

В случае, если я пытаюсь выполнить следующий скрипт, появляется сообщение «Ошибка записи: svn:».
Но если я отключаю строку с «последним», ошибок нет.
Почему?

#!/usr/bin/perl

my $repos = $ARGV[0];
my $rev = $ARGV[1];

my $repoURL = "file:///" . $ARGV[0];

open (SVNLOG, "svn log -r $rev -v $repoURL | ");

while (my $line = <SVNLOG>) {
   last;
}

close(SVNLOG);

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

Поскольку процесс svn пытается выполнить запись в поток (его стандартный вывод), и вы закрыли поток до его завершения. Если вы не хотите видеть эту строку ошибки, вам придется перенаправить svn стандартную ошибку на /dev/null или убедиться, что вы прочитали все ее вывода перед закрытием дескриптора файла.

0 голосов
/ 24 ноября 2010

Не прямой ответ на ваш вопрос, но вы должны рассмотреть возможность использования SVN :: Client из CPAN вместо прямого использования инструмента командной строки svn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...