2015-11-09 44 views
1

我想创建一个触发器来防止文件检出,如果它们属于特定的流。Perforce - 在触发器脚本中获取流名称

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

该触发器执行一个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

0

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

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