2

如果文件属于特定流,我想创建一个触发器以防止签出文件。

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

触发器执行 Perl 脚本。

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

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

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

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

这不起作用。

此外,尝试将 $p4 分配给新的 P4 失败。

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

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

谢谢,

4

3 回答 3

2

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

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

于 2015-11-09T16:23:32.673 回答
1

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

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

于 2016-04-25T14:19:39.667 回答
0

作为另一种选择,用于p4 switch显示当前流的名称。

于 2019-03-12T10:13:19.103 回答