【问题标题】:Perforce - getting stream name in a trigger scriptPerforce - 在触发脚本中获取流名称
【发布时间】:2015-11-09 07:35:20
【问题描述】:

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

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

触发器执行 Perl 脚本。

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

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

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

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

这不起作用。

另外,尝试用新的 P4 分配 $p4 失败。

有人知道如何解决这个问题吗?

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

谢谢,

【问题讨论】:

  • 您的问题是如何解决“密码无效或未设置”错误?或者您的问题是如何确定当前设置特定客户端工作区的流名称?

标签: triggers client perforce perforce-stream


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-30
        • 1970-01-01
        • 2010-11-22
        • 2018-07-05
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        • 2021-08-19
        相关资源
        最近更新 更多