如何使用perforcepythonapi检索一天内提交的变更列表

2024-10-01 17:31:08 发布

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

我是一个新的performetpythonapi,但仍然在寻找方法。到目前为止,如果我提供文件名,我已经能够检索变更列表信息,比如number、desc等。我正在尝试获取指定日期/时间范围内提交的所有更改列表的列表,以便我可以收集诸如更改的文件和每个更改列表的描述等信息。有没有方法使用API来完成此操作?在

谢谢


Tags: 文件方法api信息number列表文件名时间
3条回答

下面的代码输出列表列出了今天对file.c的更改:

import subprocess
import datetime
curr = datetime.datetime.now()
file = "file.c"
cmd = 'p4 changes -s submitted %s@%s/%s/%s,@now' % (file, curr.year, curr.month, curr.day)
print subprocess.check_call(cmd)

请注意,在执行上述脚本之前,您应该在您的环境中设置P4PORT和P4USER。如果不想设置,可以使用-p和-u开关在命令中设置这些参数。在

在上面的代码中,查询是为获取file.c上今天的变更列表而创建的,您可以操作日期和文件名以获得所需的结果。在

您也可以使用类似于:

from P4 import P4, P4Exception
p4 = P4()
p4.port = "A"
p4.user = "B"
p4.client = "C"

try:
    p4.connect()
    changelist = p4.run_changes('//server/folder/...@yyyy/mm/dd,@now')
    # p4.run("change","//server/folder/...@yyyy/mm/dd,@now") works as well
    for c in changelist:
      print c.desc
      # or whatever you want, including: status, client, user, changelist...

except P4Exception:
    for e in p4.errors:
        print e

finally:
    p4.disconnect()

对我来说,它感觉更正确,因为它使用p4pythonapi和正确的run方法(调用p4change命令),而且您还可以获得关于每个变更列表的更多信息。在

less than extensive P4Python documentationa question from the Perforce forum的阅读来看,这段代码也许能做到这一点,但要记住它是完全未经测试的**所以请注意清空者和所有这些

在filelog命令中,...似乎是请求文件夹中所有文件的方法,因此您只需要用适当的值替换server和{}。在

from P4 import P4, P4Exception
p4 = P4()
p4.port = "1"
p4.user = "User"
p4.client = "Client"

try:
    p4.connect()
    changelist = p4.run_filelog('//server/folder/...@yyyy/mm/dd,@now')
    for r in changelist:
      print r.depotFile
      print r.revisions[0].time

except P4Exception:
    for e in p4.errors:
        print e

finally:
    p4.disconnect()

**是的,我可以下载Perforce,安装它,添加一些文件,然后测试代码,但这似乎有点过分。在

相关问题 更多 >

    热门问题