Perforce - 在触发器脚本中获取流名称

时间:2015-11-09 07:35:21

标签: triggers client perforce perforce-stream

我想创建一个触发器来阻止文件签出,如果它们属于特定的流。

我正在使用预用户编辑触发器。

触发器执行Perl脚本。

当我在Perl脚本中执行p4命令时,我收到此错误:

Perforce密码(P4PASSWD)无效或未设置。

我所做的是从客户端名称中获取流名称(传递给Perl脚本):

 $ stream = `p4 client -o $ client | grep ^Stream: | awk '{print \$ 2}'`;
 chomp $ stream;

这不起作用。

此外,尝试使用新P4分配$ p4失败。

任何人都知道如何解决这个问题?

至少,请给我一种方法从客户名称中提取流名称?

谢谢,

2 个答案:

答案 0 :(得分:2)

您必须登录Perforce才能运行p4 client。在交互式shell中,您可以通过p4 login来提示您输入密码。经过验证后,Perforce会让您登录一周左右(取决于您的P4服务器设置)。在那一周,您的命令应该会成功,但是一旦您的会话到期,它将再次开始失败。

如果会话到期对您来说是一个问题,您需要获得一张未过期的机票。这必须由您的服务器管理员启用(阅读"创建未过期的票证..." att p4 login)。另请参阅P4TICKETS

答案 1 :(得分:0)

作为替代方案,
$ stream = p4 -F "%Stream%" -ztag client -o;

这只会给你一个流名称(不需要修剪)