我有这个问题一直困扰着我很长一段时间。最好参考以下(众所周知的)脚本来解释它:
@rem= 'PERL for Windows NT -- ccperl must be in search path
@echo off
ccperl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
@rem ';
###########################################
# Begin of Perl section
$start_dir = $ARGV[0];
#
# Fixed variable
#
$S = "\\";
$list_file = "c:".$S."list_file";
$list_add = "c:".$S."list_add";
$choosed = "c:".$S."choosed";
sub clean_file
{
$status = system("del $list_file > NUL 2> NUL");
$status = system("del $list_add > NUL 2> NUL");
$status = system("del $choosed > NUL 2> NUL");
}
#
# Start of the script...
#
printf("add-to-src-control $start_dir...\n");
clean_file();
$status = system("cleartool ls -view_only -r -s $start_dir > $list_file");
open(LIST_ELEMENT,$list_file);
while ($element=<LIST_ELEMENT>)
{
chop $element;
# printf " Processing $element ";
if ($element =~ /CHECKEDOUT/)
{
# printf(" checkedout file \n");
}
else
{
# printf " view private \n";
printf " Processing $element ...\n";
#
# For files with spaces...
#
if ($element =~ / /)
{
$status = system("cmd /c echo \"$element\" >> $list_add");
}
else
{
$status = system("cmd /c echo $element >> $list_add");
}
}
}
close(LIST_ELEMENT);
if (-e $list_add)
{
$listelement = `type $list_add`;
$listelement =~ s/\n/,/g;
$status = `echo $listelement > $list_add`;
$status = system("clearprompt list -outfile $choosed -dfile $list_add -choices
-prompt \"Choose element(s) to put over version control : \" -prefer_gui");
if ($status != 0)
{
# printf("\n Aborting ...\n");
clean_file();
exit $status;
}
#
$listtoadd = `type $choosed`;
$listtoadd =~ s/\n//g;
printf("\n cleardlg /addtosrc $listtoadd");
$status = system("cleardlg /addtosrc $listtoadd");
clean_file();
exit $status;
}
else
{
# printf("\n No files founded...\n");
clean_file();
exit $status;
}
# End of Perl section
__END__
:endofperl
可以在“ ClearCase:十佳脚本”中找到。
现在,为避免任何误解,脚本运行良好;我按照步骤(在上述网站上概述)重现了递归添加到源代码控制功能。
我的问题(或问题)是这样的:
我们如何在这里排除具有某些扩展名(*.asv
或*.dll
,例如)的文件被添加到源代码管理(更准确地说,被添加到返回的元素列表中;见下面的第二个问题)?
(与文件夹类似。)
是行:
$status = system("cleartool ls -view_only -r -s $start_dir > $list_file");
要关注的那个?
我的第二个问题具有相当“化妆品”的性质。
运行脚本后生成的输入框(至少在我的情况下)太小,无法容纳要添加到源代码管理的元素的整个路径。
有没有办法确保完整路径始终可见?
会不会是修改的问题
$status = system("clearprompt list -outfile $choosed -dfile $list_add -choices
-prompt \"Choose element(s) to put over version control : \" -prefer_gui");
还是我完全错了?这就是现在的全部。任何帮助将不胜感激!