首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perforce: perforce中的集成源

perforce: perforce中的集成源
EN

Stack Overflow用户
提问于 2019-07-10 19:36:12
回答 1查看 138关注 0票数 1

我正在尝试从perforce客户端上打开的一个文件中查找集成源。

我的命令:-

代码语言:javascript
复制
/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

命令在我显式运行时按预期工作。

但是当我尝试在我的脚本中运行时,它并不像预期的那样工作。

我的脚本:-

代码语言:javascript
复制
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到主分支的集成。不确定我在脚本中提到的命令是否有问题。

提交文件时将运行时参数传递给脚本。运行时参数解析没有问题。

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2019-07-10 23:56:04

您正在运行的命令在某处收到一条错误消息,而您传递的-F参数正在将其删除:

代码语言:javascript
复制
my @files = `$p4 -Ztag -F %clientFile% opened -c $ChangeNum -C $Client | $p4 -F %fromFile% -x - resolved`;

将其替换为:

代码语言:javascript
复制
open(STDERR, ">&STDOUT");
my @files = `$p4 -Ztag -F %clientFile% opened -c $ChangeNum -C $Client | $p4 -x - resolved`;
print @files;

以找出您收到的错误消息。

如果这也是空的,则后退一步:

代码语言:javascript
复制
open(STDERR, ">&STDOUT");
my @files = `$p4 -Ztag opened -c $ChangeNum -C $Client`;
print @files;

一旦您可以看到错误消息,它就会告诉您调用命令的方式有什么问题。

我的直觉是,问题在于您的resolved命令使用的不是打开文件的同一客户端。如果是这样,错误将类似于no file(s) resolved;您可以通过将文件名传递给p4 opened (不指定-C client)来确认,以查看它在当前客户端上是否处于打开状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56969886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档