我想创建一个触发器来阻止文件签出,如果它们属于特定的流。
我正在使用预用户编辑触发器。
触发器执行Perl脚本。
当我在Perl脚本中执行p4命令时,我收到此错误:
Perforce密码(P4PASSWD)无效或未设置。
我所做的是从客户端名称中获取流名称(传递给Perl脚本):
$ stream = `p4 client -o $ client | grep ^Stream: | awk '{print \$ 2}'`;
chomp $ stream;
这不起作用。
此外,尝试使用新P4分配$ p4失败。
任何人都知道如何解决这个问题?
至少,请给我一种方法从客户名称中提取流名称?
谢谢,
答案 0 :(得分:2)
您必须登录Perforce才能运行p4 client
。在交互式shell中,您可以通过p4 login
来提示您输入密码。经过验证后,Perforce会让您登录一周左右(取决于您的P4服务器设置)。在那一周,您的命令应该会成功,但是一旦您的会话到期,它将再次开始失败。
如果会话到期对您来说是一个问题,您需要获得一张未过期的机票。这必须由您的服务器管理员启用(阅读"创建未过期的票证..." att p4 login)。另请参阅P4TICKETS。
答案 1 :(得分:0)
作为替代方案,
$ stream = p4 -F "%Stream%" -ztag client -o
;
这只会给你一个流名称(不需要修剪)