我正在創建一個Perl腳本,其中包括設置到ClearCase視圖,源代碼環境,運行綜合工具,處理輸出報告。它通過管道系統打開使用IPC::open2
打開的外殼程序。在使用Perl IPC打開的shell進程中不能'cleartool setview':: open2
如果我在運行Perl腳本之前手動設置視圖,它似乎可以正常工作(cleartool子命令,例如pwv
工作)。然而,當我在腳本運行$ct setview anassar_$proj
,它提供了以下錯誤信息:
stty: standard input: Invalid argument
我不知道的,禁止其通過管道傳輸到一個shell進程中運行ct setview
任何約束。任何幫助?
my ($readme, $writeme);
# Open the default shell and hook to its stdin and stdout.
my $pid = open2($readme, $writeme, "$ENV{SHELL}") or
croak "Cannot open IPC handles to $ENV{SHELL}\n";
runCmd("$ct pwv");
runCmd("$ct setview anassar_$proj");
runCmd("$ct pwv");
runCmd('source /vobs/blah/blah/blah/env.csh');
runCmd('echo env_var1 = $env_var1');
runCmd('echo env_var2 = $env_var2');
runCmd('echo env_var3 = $env_var3');
runCmd('exit'); # Exit from ClearCase View
runCmd('exit'); # Exit from shell.
sub runCmd {
my ($cmd) = @_;
my $sentinel = '___SOME_STRING_THAT_CANNOT_OCCUR_IN_OUTPUT___';
print $writeme "$cmd && echo $sentinel\n";
while (my $output = <$readme>) {
last if ($output =~ /$sentinel/);
print $output;
}
}
我發現[這個答案](http://stackoverflow.com/questions/10252436/python-and-clearcase-setview)到一個類似的問題。我嘗試使用'startview'並使用路徑'/ view/tagname/vobs/blah/blah/blah/env.csh'引用環境腳本,但環境腳本本身(不受我控制)是直接使用'/ vobs'層次結構(即需要'setview')。 我現在知道的唯一解決方案是使用: 'ct setview -exec「myscript」tagname' –
我會建議你一件事,儘管它可能不可能。儘快離開ClearCase。我也在用Perl + cleartool解決一個問題。在我的情況下,它是如何通過啓動cleartool更新的perl腳本將'CTRL + C'信號傳遞給cleartool。這是不可能的(在Windows上)。 –
@RenéKolařík:坦率地說,作爲一名數字VLSI設計師(而不是IT基礎架構專家),我偶爾會遇到這種麻煩。 IT部門仍然負擔重任。我只爲我的團隊做了本地定製。所以從用戶的角度來看(我以前只使用過CVS和SVN的用戶),我覺得ClearCase結構良好,可以控制和跟蹤大型項目(我正在從事涉及1000名設計師和10多名團隊的非常大的項目)。 也許,我需要接觸到其他系統來實現你在說什麼。 –