我是Perforce Python API的新手,并且仍在寻找我的方法。到目前为止,我已经能够检索更改列表信息,如数字,desc等,如果我提供文件名。我正在尝试获取指定日期/时间范围内所有提交的更改列表的列表,以便我可以收集更改的文件和每个更改列表的描述等信息。有没有办法使用API执行此操作?
由于
答案 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 documentation和a question from the Perforce forum的阅读中,这段代码可以解决这个问题,但要记住它是完全未经测试的**所以需要注意事项以及所有这些
在filelog命令中,...
似乎是请求文件夹中所有文件的方式,因此您只需要用适当的值替换server
和folder
。< / 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更改命令),并且您还可以获得有关每个更改列表的更多信息。
慈