Perforce 后用户编辑触发器不起作用,用作用户前编辑

Posted

技术标签:

【中文标题】Perforce 后用户编辑触发器不起作用,用作用户前编辑【英文标题】:Perforce post-user-edit trigger not working, works as pre-user-edit 【发布时间】:2020-01-19 15:22:39 【问题描述】:

我正在尝试创建用户编辑后触发器,以根据标记为编辑的文件显示警告消息。我想通过让触发器失败来做到这一点,然后客户端将显示失败消息。

我的触发器现在被分解为仅用于调试目的的裸打印语句。我在 python 中编写了触发器,它只是打印“Hello”然后返回 1(失败)以触发客户端显示触发器验证消息。

当触发器设置为用户前编辑时,这非常有效,我看到“TestTrigger”验证失败并且客户端显示“Hello”消息。但是,一旦我交换此触发器以运行后期编辑,我就会得到一个“”:验证失败。它没有正确列出我的触发器名称,也没有打印出我的“Hello”消息。

使用帖子触发器是否有任何细微差别?不确定我做错了什么。

这是我正在使用的示例:

触发器文件:

Triggers:
    TestTrigger command post-user-edit "/usr/bin/python %//Path/To/triggerTest.py%"

触发器本身:

import sys

def run():
    print "Hello"
    return 1

if __name__ == "__main__":
    sys.exit(run())

失败消息,敏感信息被涂黑

【问题讨论】:

【参考方案1】:

不确定这是否是您遇到的实际问题,但您不需要返回失败;我什至不确定命令后触发器上的“失败”是什么意思,因为命令已经发生。 :)

C:\Perforce\test>p4 triggers -o | tail -n2
        edit command post-user-edit "echo Edit!"


C:\Perforce\test>p4 edit foo
//stream/main/foo#4 - currently opened for edit
Edit!

由于您没有得到任何输出,我猜问题实际上是由于路径中的拼写错误或类似原因,触发器没有运行。服务器日志文件可能有线索。

【讨论】:

我同意触发器似乎并未真正运行。我不认为这是路径问题,因为我可以使用完全相同的触发线,只需将“post”更改为“pre”,触发器就会正确运行。我将尝试查看服务器日志以获取更多信息。 其他可能有助于缩小问题范围的尝试:将脚本更改为返回 0,尝试从命令行而不是 P4V 进行编辑

以上是关于Perforce 后用户编辑触发器不起作用,用作用户前编辑的主要内容,如果未能解决你的问题,请参考以下文章

插入触发器后MySQL不起作用

更新触发器后 SQL Server 不起作用

用户编辑资源不起作用

MySQL触发器正则表达式不起作用

MySql - 触发器不起作用 - 中止插入

在 Management Studio 中编辑后 SQL Server 视图不起作用