如何使用Perforce Python API在一天内检索提交的更改列表

时间:2014-03-19 07:57:31

标签: python perforce

我是Perforce Python API的新手,并且仍在寻找我的方法。到目前为止,我已经能够检索更改列表信息,如数字,desc等,如果我提供文件名。我正在尝试获取指定日期/时间范围内所有提交的更改列表的列表,以便我可以收集更改的文件和每个更改列表的描述等信息。有没有办法使用API​​执行此操作?

由于

3 个答案:

答案 0 :(得分:2)

以下代码输出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上的今天的更改列表。您可以操作日期和文件名以获得所需的结果。

答案 1 :(得分:1)

从对less than extensive P4Python documentationa question from the Perforce forum的阅读中,这段代码可以解决这个问题,但要记住它是完全未经测试的**所以需要注意事项以及所有这些

在filelog命令中,...似乎是请求文件夹中所有文件的方式,因此您只需要用适当的值替换serverfolder。< / p>

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,安装它,添加一些文件然后测试代码,但这似乎有点过度杀伤。

答案 2 :(得分:0)

您还可以使用以下内容:

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()

对我来说,感觉更正确,因为它使用P4Python API和正确的运行方法(调用p4更改命令),并且您还可以获得有关每个更改列表的更多信息。