我已经下载并安装了perforceapi for Python。在
我可以在这个页面上运行示例: http://www.perforce.com/perforce/doc.current/manuals/p4script/03_python.html#1127434
但不幸的是,文件似乎不完整。例如,P4
类有一个名为run_sync
的方法,但是它没有被任何地方记录(事实上,如果您在Python交互解释器中运行dir(p4)
,那么它甚至不会出现,尽管您可以在交互式解释器中很好地使用该方法)
因此,除了上面链接的页面上的一些小例子之外,我正在努力弄清楚如何使用API。在
我想写一个脚本,只需将子目录的最新版本下载到运行它的计算机的文件系统中,而不做其他任何事情。我不希望服务器以任何方式改变。我不希望有任何迹象表明这些文件来自Perforce(相反,如果您通过Perforce应用程序获取文件,它会将文件系统中的文件标记为只读,直到您将它们签出或诸如此类。这太傻了-我只需要把运行脚本时子目录的快照拉下来。)
Python API遵循与命令行客户机相同的基本结构(两者都是同一底层API上非常薄的包装器),因此您需要查看命令行客户机文档;例如,查看“p4 sync”以了解P4Python中的“run_sync”是如何工作的:
http://www.perforce.com/perforce/r14.2/manuals/cmdref/p4_sync.html
对于您所描述的任务,我将执行以下操作(我将用Perforce命令来描述它,因为我的Python有点生疏;一旦您知道要运行什么命令,就应该很容易将其转换为Python,因为P4Python文档中有创建和修改客户机规范的示例,这是最困难的零件):
1)创建一个客户机,将所需的仓库目录映射到所需的本地文件系统位置,例如,如果您希望将目录“//depot/foo/…”下载到“/usr/team/foo”,您将创建一个如下所示的客户机:
您应该在客户端上设置“allwrite”选项,因为您说过不希望同步的文件为只读:
^{pr2}$2)同步,使用“-p”选项最小化对服务器的影响(服务器不会记录您“拥有”这些文件)。在
3)删除客户端。在
(我省略了一些细节,比如确保您的身份验证是正确的,这是另一个潜在的挑战,这取决于服务器的安全性以及它是否使用外部身份验证,但听起来这并不是您遇到问题的部分。)
相关问题 更多 >
编程相关推荐