Заявление о принятии Perl Cleartool

Я использую следующий код для выполнения оператора ClearCase «Принять» из сценария perl.

$acceptA = `accept $Component`;

После выполнения внутри моего perl-скрипта значение $acceptA остается пустым.

Текст, отображаемый на экране во время выполнения этой строки: «ОШИБКА У вас нет прав для ПРИНЯТИЯ этой работы».

Как мне прочитать эту строку? Я думал, что он вернется в переменную $acceptA, как это происходит с командой «cleartool checkin»?


person user2609789    schedule 08.05.2014    source источник
comment
accept $Component находится внутри обратных галочек, но не видно выше...   -  person user2609789    schedule 08.05.2014
comment
Я не знаю о команде ant 'accept' ClearCase UCM. Это рабочая команда CC-ClearQuest? А РТК один?   -  person VonC    schedule 08.05.2014
comment
Да, это инструмент рабочего процесса в Unix. Команда принятия работает. Он используется руководителем группы после того, как программа была зарегистрирована для принятия изменений...   -  person user2609789    schedule 08.05.2014
comment
Так возможно ли, что ваш скрипт не выполняется нужным пользователем? (имеется в виду пользователь с достаточными привилегиями для использования команды accept)   -  person VonC    schedule 08.05.2014
comment
Да, это проблема, однако я хотел бы прочитать ошибку в сценарии, чтобы я мог записать правильное сообщение об ошибке в файл журнала...   -  person user2609789    schedule 08.05.2014
comment
Значит, ответ ДеВаддера должен помочь, не так ли?   -  person VonC    schedule 08.05.2014
comment
Да, его ответ определенно помогает.   -  person user2609789    schedule 08.05.2014


Ответы (2)


Поскольку я не знаю ClearCase и как это работает, я могу только догадываться. Видя, что это сообщение об ошибке, оно может быть записано в STDERR вместо STDOUT, а обратные кавычки фиксируют только STDOUT выполняемой команды. В этом случае будет работать перенаправление команд STDERR в STDOUT. Пытаться

$acceptA = `accept $Component 2>&1`

и посмотрите, работает ли это при захвате вывода в случае ошибки.

person DeVadder    schedule 08.05.2014
comment
Я все еще не могу обработать ошибку с приведенным выше, но я думаю, что вы правы, когда пишете в STDERR... Поиграем с этим и сообщим вам. - person user2609789; 08.05.2014

В конце концов я перенаправил SYSERR в выходной файл, который я мог читать/записывать.

открыть STDERR, ">/ellipse/el6.3.3_ry_sup/src/0/$logfile"

Все сообщения об ошибках, которые отображались на экране как часть системной команды, попадали в $logfile.

Я также смог добавить в SYSERR следующее: print STDERR "\nAccepting $Component";

Спасибо за помощь.

person user2609789    schedule 12.05.2014