Python perforceapi:获取子目录的最新版本

Python perforceapi:获取子目录的最新版本,python,perforce,Python,Perforce,我已经下载并安装了用于Python的PerformceAPI 我可以运行此页面上的示例: 但不幸的是,文件似乎不完整。例如,P4类有一个名为run\u sync的方法,但它没有在任何地方记录(事实上,如果在Python交互式解释器中运行dir(P4),它甚至不会显示,尽管您可以在交互式解释器中很好地使用该方法。) 因此,除了上面链接的页面上的一些小例子之外,我正在努力弄清楚如何将API用于任何事情 我想写一个脚本,它只需将子目录的最新版本下载到运行它的计算机的文件系统中,而不做其他任何事情。我

我已经下载并安装了用于Python的PerformceAPI

我可以运行此页面上的示例:

但不幸的是,文件似乎不完整。例如,
P4
类有一个名为
run\u sync
的方法,但它没有在任何地方记录(事实上,如果在Python交互式解释器中运行
dir(P4)
,它甚至不会显示,尽管您可以在交互式解释器中很好地使用该方法。)

因此,除了上面链接的页面上的一些小例子之外,我正在努力弄清楚如何将API用于任何事情


我想写一个脚本,它只需将子目录的最新版本下载到运行它的计算机的文件系统中,而不做其他任何事情。我不希望服务器以任何方式更改。我不希望有任何迹象表明这些文件来自Perforce(与通过Perforce应用程序获取文件相反,它会将文件系统中的文件标记为只读,直到您签出它们或诸如此类。这太傻了-我只需要下拉脚本运行时子目录的快照。)

Python API遵循与命令行客户端相同的基本结构(两者都是同一底层API上非常薄的包装),因此您需要查看命令行客户端文档;例如,查看“p4 sync”以了解P4Python中的“run_sync”是如何工作的:

对于您描述的任务,我将执行以下操作(我将用Perforce命令来描述它,因为我的Python有点生疏;一旦你知道你正在运行什么命令,翻译成Python应该很简单,因为P4Python文档中有创建和修改客户端规范之类的例子,这是最难的部分):

1) 创建一个客户端,将所需的depot目录映射到所需的本地文件系统位置,例如,如果您希望将目录“//depot/foo/…”下载到“/usr/team/foo”,您将创建一个如下所示的客户端:

Client: mytempclient123847
Root: /usr/team/foo
View:
    //depot/foo/... //mytempclient123847/...
您应该在客户端上设置“allwrite”选项,因为您说过不希望同步文件为只读:

Options: allwrite noclobber nocompress unlocked nomodtime rmdir
2) 同步,使用“-p”选项最小化服务器影响(服务器不会记录您“拥有”文件)

3) 删除客户端


(我省略了一些细节,比如确保您的身份验证正确——这是一个完全其他的潜在挑战,取决于您的服务器的安全性以及它是否使用外部身份验证,但听起来这并不是您遇到问题的部分。)

文件是只读的这一事实是否是您使用同步功能的唯一交易破坏者?您是否尝试过从模板创建客户端工作区并对其进行同步的示例?@martineau:我尝试过,但我不想创建新模板,因为这些模板会显示在服务器上,不是吗?似乎您可以使用默认的客户端规范模板,或者从中创建自己的虚拟模板以用于此目的。如果您希望文件在同步后是可写的,而不是只读的,这是工作区定义的一个属性:设置“allwrite”选项:我不知道-p选项,很好。