我正在尝试从perforce客户端上打开的一个文件中查找集成源。
我的命令:-
/grid/common/pkgs/perforce/v2018.1/bin/p4 -p 10.202.176.19:1641 -Ztag -F %clientFile% opened -c default -C cheruvu_client | /grid/common/pkgs/perforce/v2018.1/bin/p4 -p 10.202.176.19:1641 -F %fromFile% -x - resolved命令在我显式运行时按预期工作。
但是当我尝试在我的脚本中运行时,它并不像预期的那样工作。
我的脚本:-
use strict;
use warnings;
my $Client = $ARGV[0];
my $ChangeNum = $ARGV[1];
my $Port = $ARGV[2];
my $p4 = "/grid/common/pkgs/perforce/v2018.1/bin/p4 -p $Port";
my @files = `$p4 -Ztag -F %clientFile% opened -c $ChangeNum -C $Client | $p4 -F %fromFile% -x - resolved`;
if (@files){
foreach my $file(@files){
chomp($file);
if ($file =~ /\/\/depot\/vip\/src\/branches\/private_branch\/.*/i){
print "Integrations from private_branch-> main is not allowed.\n\n";
exit(1);
}
}
}@files数组值为空。虽然我已经为集成打开了文件。
我的脚本的目的是设置触发器,以避免从private_branch到主分支的集成。不确定我在脚本中提到的命令是否有问题。
提交文件时将运行时参数传递给脚本。运行时参数解析没有问题。
请帮帮忙。
发布于 2019-07-10 23:56:04
您正在运行的命令在某处收到一条错误消息,而您传递的-F参数正在将其删除:
my @files = `$p4 -Ztag -F %clientFile% opened -c $ChangeNum -C $Client | $p4 -F %fromFile% -x - resolved`;将其替换为:
open(STDERR, ">&STDOUT");
my @files = `$p4 -Ztag -F %clientFile% opened -c $ChangeNum -C $Client | $p4 -x - resolved`;
print @files;以找出您收到的错误消息。
如果这也是空的,则后退一步:
open(STDERR, ">&STDOUT");
my @files = `$p4 -Ztag opened -c $ChangeNum -C $Client`;
print @files;一旦您可以看到错误消息,它就会告诉您调用命令的方式有什么问题。
我的直觉是,问题在于您的resolved命令使用的不是打开文件的同一客户端。如果是这样,错误将类似于no file(s) resolved;您可以通过将文件名传递给p4 opened (不指定-C client)来确认,以查看它在当前客户端上是否处于打开状态。
https://stackoverflow.com/questions/56969886
复制相似问题