文件不在客户端上

2024-06-09 05:05:15 发布

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

自从我开始实现工作区感知以来,P4Python遇到了一个非常奇怪的问题。在

情况如下:

我有一个“P4Commands”模块,它继承P4并连接到__init__()

那么,我分别有以下几节课:

  • P4用户
  • P4工作区
  • P4更改列表

P4Commands模块继承P4并调用其父级的“run”方法,同时还注入一些我实现的自定义缓存,以加速大量调用。run方法的调用方式如下:

result = super(P4Commands, self).run(*args, **kwargs)

然后记录并返回。在

当我对一个文件调用一个操作时,我首先通过P4User来确定该文件在哪个工作区中。然后,在找到匹配的工作区实例上执行以下操作:

^{pr2}$

其中FUNCS是P4Commands模块实例。在

我遇到的问题是,对于一个在我调用fstat时返回信息的文件,只有当我调用“edit”命令时,才会出现“files not on client”错误。其他命令(add、fstat、where等)似乎都能正常工作。这只在edit命令上发生。在

奇怪的是,当我用完全相同的参数运行方法时,我没有得到错误,而是在工作区上下文管理器之外(直接在P4User模块上)。

更奇怪的是:我尝试禁用上下文管理器,但仍然没有任何乐趣。在

更奇怪的是,当你读到这篇文章时,你可能会想“哦,客户机没有正确设置”。我试着记录客户机工作区,它的设置和取消设置都是正确的。就像我说的,所有其他命令都可以工作,只是不能编辑。在

剩下的唯一情况是多个P4模块实例的连接发生了干扰。尝试通过一个全局的p4i实例共享一个全局命令。结果也没用。在

我试过各种方法,但在这一点上我有点卡住了。有人知道怎么解决这个问题吗?在


Tags: 模块文件实例方法run命令管理器错误
1条回答
网友
1楼 · 发布于 2024-06-09 05:05:15

经过大量的搜索,我终于解决了这个问题:

我将P4连接作为类成员实例化,这会扰乱实例,因为每个P4Workspace实例共享同一个连接并试图获得所有权。尽管大多数命令都能正常工作,但这似乎已经扰乱了连接,导致了上面列出的问题。在

我最终解决这个问题的方法是使P4继承的类实例成为P4Workspace类的实例变量。以前,它是一个班级成员。在

因此,最终工作的结构是:

  • P4User—名为FUNCS的类成员,它为非工作区特定的调用实例连接。包含多个P4Workspace实例。在
  • P4Workspace-名为“connection”的实例变量,它创建一个特定于工作区的连接以在实例上执行。在

相关问题 更多 >