ClearCase Inter项目交付 [英] ClearCase Inter project delivery
本文介绍了ClearCase Inter项目交付的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
进行项目间交付时,最好的命令是什么?我想找到合并的内容,而findmerge似乎不太好用,所以我想知道还有什么可用的。
What is the best command to run when doing interproject deliveries? I like to find what merges and findmerge does not seem very easy to use so I wonder what else is available.
推荐答案
请尝试从 cleartool交付
手册页:
You can try, from the cleartool deliver
man page:
预览交付操作:
deliver –pre/view [ –s/hort | –l/ong ] [ –str/eam stream-selector ]
[ –to integration-view-tag] [ –tar/get stream-selector ]
[ –cac/t | –act/ivities activity-selector ...
| –bas/elines baseline-selector ... ]
请确保目标项目授权跨交付:
参见 如何在UCM中将基线从一个项目传递到另一个项目?。
此线程实际上引用了一个perl脚本,用于解析 cleartool delivery -preview
的输出。
这是摘录(虽然不是完整的脚本)
This thread actually references a perl script parsing the output of a cleartool deliver -preview
.
Here is an extract (not the full script though)
$deliver = 0;
$delmsg = "";
$sendmail = 0;
$mailprio = "";
$cmd = "cleartool deliver -preview -stream $stream";
print ("CMD ==> $cmd\n");
system ("echo $cmd >>$logfile");
$ct_out = `$cmd 2>&1 | $tee -a $logfile`;
print ("$ct_out\n\n");
if ($ct_out =~ /Changes will be POSTED/) {
$deliver = 1;
$sendmail = 1;
$delmsg = "Changes to be delivered";
print ("$delmsg\n");
system ("echo $delmsg >>$logfile");
$cmd = "cleartool deliver -force -stream $stream";
print ("CMD ==> $cmd\n");
system ("echo $cmd >>$logfile");
system ("$cmd 2>&1 | $tee -a $logfile");
} elsif ($ct_out =~ /Deliver operation already in progress/) {
$deliver = 0;
$delmsg = "DELIVERY ALREADY IN PROGRESS";
print ("$delmsg\n");
$sendmail = 1;
} elsif ($ct_out =~ /No activities to deliver/) {
$deliver = 0;
$delmsg = "No activities to deliver";
print ("$delmsg\n");
} elsif ($ct_out =~ /There are checkouts in activities/) {
$deliver = 0;
$delmsg = "UNABLE TO DELIVER DUE TO CHECKOUTS";
print ("$delmsg\n");
$sendmail = 1;
$mailprio = "-priority 1";
} elsif ($ct_out =~ /Unable to start a deliver operation while a rebase operation is in progress/) {
$deliver = 0;
$delmsg = "UNABLE TO DELIVER DUE TO REBASE IN PROGRESS";
print ("$delmsg\n");
$sendmail = 1;
$mailprio = "-priority 1";
} else {
$deliver = 0;
$delmsg = "FAILED TO DETERMINE STATUS";
$toaddr = $toaddr2;
print ("$delmsg\n");
$sendmail = 1;
$mailprio = "-priority 1";
}
如果您只想请参阅相关活动,此线程建议:
#!/usr/bin/perl -w
use strict;
my $streamSelector = 'stream@pvob'; # here you should specify the actual stream selector
# HASH structure
# activity-to-deliver => http://activity-depend-on, ...
my %dependency;
# Get all new activities that can be delivered
my $cmd = "cleartool deliver -preview -stream $streamSelector";
open(ACTIVITIES, "$cmd|") or die("Error: $!\n");
while (<ACTIVITIES>)
{
chomp;
if (m/^\s+activity:(^\s+)\s+/)
{
$dependency{$1} = [];
}
}
close(ACTIVITIES);
# Get dependency of all the activities
foreach my $activity (sort(keys(%dependency)))
{
$cmd = "cleartool deliver -preview -stream $streamSelector -activities $activity";
open(DELIVER, "$cmd 2>&1 |") or die("Error: $!\n");
while (<DELIVER>)
{
chomp;
if (m/^cleartool: Error: Activity \"(+)\" must be added to activity list\.$/)
{
push(@{$dependency{$activity}}, $1);
}
}
close(DELIVER);
}
# Output result
foreach (sort(keys(%dependency)))
{
print("$_\n");
foreach (sort(@{$dependency{$_}}))
{
print("\t$_\n");
}
print("\n");
}
这篇关于ClearCase Inter项目交付的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文