Perforce p4 sync工作,但python库失败

2024-09-29 02:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

为了更好地与代码片段集成,我们切换到python库,但它有一些奇怪的副作用,只有一些操作的行为与CLI版本不同

我们正在运行以下命令:

p4 sync //depot/test/...#head它将返回`个最新文件,但是对tye python API做同样的事情

from P4 import P4, P4Exception

p4 = P4()
p4.port = "ssl:test:1666"
p4.user = "test-bot"
p4.client = "test-bot_projectX_wing0044"


p4.connect()
print("before run sync")
print p4.run_sync("{}/...#head".format("//depot/projectX"))
print("after run sync")
p4.disconnect()

if p4.errors:
    print(p4.errors)
if p4.warnings:
    print(p4.warnings)

输出:

python V:\tests\minimal.py
    before run sync
Traceback (most recent call last):
  File "V:\tests\minimal.py", line 11, in <module>
    print p4.run_sync("{}/...#head".format("//depot/projectX"))
  File "C:\Python27\lib\site-packages\P4.py", line 497, in <lambda>
    return lambda *args, **kargs: self.run(cmd, *args, **kargs)
  File "C:\Python27\lib\site-packages\P4.py", line 611, in run
    raise e
P4.P4Exception: [P4#run] Warnings during command execution( "p4 sync //depot/projectX/...#head" )

        [Warning]: '//depot/projectX/...#head - file(s) up-to-date.'

不返回任何内容,而且,它无法执行此语句之后的任何其他p4命令(在connect和disconnect之间)。此外,此失败操作之后的任何print语句都将被忽略。我们在try-catch块中运行这个代码段,但是,run_sync似乎没有抛出

编辑:基于samwise的评论 我用{}捕捉{}我把它扩展到了{},现在我看到了{}

然而,当我打开p4v并用鼠标右键单击//depot/project和do get latest revision时,执行的命令与此完全相同


Tags: runinpytest命令linesynchead
1条回答
网友
1楼 · 发布于 2024-09-29 02:18:48

在这里您将得到警告异常,您可以按异常级别解决它

p4 = P4()
p4.port = "ssl:test:1666"
p4.user = "test-bot"
p4.client = "test-bot_projectX_wing0044"

p4.exception_level = 1 #it is 2 by default which means raise all.
p4.connect()

参考文件Perforce Exception

相关问题 更多 >