首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >P4Python p4.temp_client坏了?

P4Python p4.temp_client坏了?
EN

Stack Overflow用户
提问于 2018-09-20 14:14:43
回答 1查看 474关注 0票数 1

我似乎不能在p4python中使用临时客户端...

当我保存一个客户端时,我可以很好地同步。例如。

代码语言:javascript
复制
from P4 import P4,P4Exception
p4 = P4()
p4.client = "example"
p4.port = "1666"
p4.user = "fooser"
client_root = '/foo/bar'

p4.connect()
client = p4.fetch_client()
client._root = client_root
p4.save_client(p4)
p4.run_sync('-f')

工作正常。我在仓库里拿到了文件。

但是,如果我将最后一行修改为临时客户端...

代码语言:javascript
复制
with p4.temp_client('temp',client) as t:
    p4.run_sync()

我得到了下面的错误...

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/Users/fooser/repos/foo/foo-env/lib/python3.7/site-packages/P4.py", line 868, in temp_client
    ws = self.fetch_client('-t', template, name)
  File "/Users/fooser/repos/foo/foo-env/lib/python3.7/site-packages/P4.py", line 503, in <lambda>
    return lambda *args, **kargs: self.__fetch(cmd, *args, **kargs)
  File "/Users/fooser/repos/foo/foo-env/lib/python3.7/site-packages/P4.py", line 538, in __fetch
    result = self.run(cmd, "-o", *args, **kargs)
  File "/Users/fooser/repos/foo/foo-env/lib/python3.7/site-packages/P4.py", line 611, in run
    raise e
  File "/Users/fooser/repos/foo/foo-env/lib/python3.7/site-packages/P4.py", line 605, in run
        result = P4API.P4Adapter.run(self, *flatArgs)
P4.P4Exception: [P4#run] Errors during command execution( "p4 client -o -t {'Client': 'ansible', 'Update': '2018/09/20 05:58:44', 'Access': '2018/09/20 05:58:44', 'Owner': 'stobias', 'Host': 'toby-imac.local', 'Description': 'ignore', 'Root': '/Users/stobias/p4test', 'Options': 'noallwrite noclobber nocompress unlocked nomodtime normdir', 'SubmitOptions': 'submitunchanged', 'LineEnd': 'local', 'Type': 'writeable', 'Backup': 'enable', 'View': ['//depot/... //ansible/...']} temp_9c5db5fa-bc9a-11e8-a517-10ddb1a3f3f1" )

    [Error]: "Wildcards (*, %%x, ...) not allowed in '{'Client':_'ansible',_'Update':_'2018/09/20_05:58:44',_'Access':_'2018/09/20_05:58:44',_'Owner':_'stobias',_'Host':_'toby-imac.local',_'Description':_'ignore',_'Root':_'/Users/stobias/p4test',_'Options':_'noallwrite_noclobber_nocompress_unlocked_nomodtime_normdir',_'SubmitOptions':_'submitunchanged',_'LineEnd':_'local',_'Type':_'writeable',_'Backup':_'enable',_'View':_['//depot/... //ansible/...']}'."
[P4#run] Errors during command execution( "p4 client -o -t {'Client': 'ansible', 'Update': '2018/09/20 05:58:44', 'Access': '2018/09/20 05:58:44', 'Owner': 'stobias', 'Host': 'toby-imac.local', 'Description': 'ignore', 'Root': '/Users/stobias/p4test', 'Options': 'noallwrite noclobber nocompress unlocked nomodtime normdir', 'SubmitOptions': 'submitunchanged', 'LineEnd': 'local', 'Type': 'writeable', 'Backup': 'enable', 'View': ['//depot/... //ansible/...']} temp_9c5db5fa-bc9a-11e8-a517-10ddb1a3f3f1" )

    [Error]: "Wildcards (*, %%x, ...) not allowed in '{'Client':_'ansible',_'Update':_'2018/09/20_05:58:44',_'Access':_'2018/09/20_05:58:44',_'Owner':_'stobias',_'Host':_'toby-imac.local',_'Description':_'ignore',_'Root':_'/Users/stobias/p4test',_'Options':_'noallwrite_noclobber_nocompress_unlocked_nomodtime_normdir',_'SubmitOptions':_'submitunchanged',_'LineEnd':_'local',_'Type':_'writeable',_'Backup':_'enable',_'View':_['//depot/... //ansible/...']}'."

我试着深入研究了一下源码,但是这个库似乎依赖于c++模块,我已经超出了我的能力范围。

P4python源代码和示例- https://swarm.workshop.perforce.com/view/guest/robert_cowham/perforce/API/python/index.html?v=9#downloads

EN

回答 1

Stack Overflow用户

发布于 2018-09-21 01:06:27

查看错误,我可以看到它试图将Python dict的字符串表示作为"-t“标志传递给p4命令,这显然是错误的。:)

来自temp_client上的文档:

p4.temp_client( "<prefix>", "<template>" ) Creates a temporary client, using the prefix <prefix> and based upon a client template named <template>

第二个arg只是模板客户端的名称(作为字符串),而不是整个规范(作为dict)。这就是在实际的p4命令中作为-t template传递的内容。

尝试:

代码语言:javascript
复制
with p4.temp_client('temp', 'example') as t:
    p4.run_sync()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52418722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档