Perforce 脚本:每当远程仓库的文件发生更改时同步

Perforce scripting : sync whenever remote depot's files are changed

我有一个 perforce 客户端工作区和一个远程仓库。我正在尝试编写一个 Python 脚本,每当在该软件仓库中添加或更改新文件时,它会定期将远程软件仓库同步到我的客户端工作区。我在这里检查了 P4P API 和一个非常有用的 answer 并且对如何实现这个有了一个模糊的想法:-

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 #does this print the contents of the changed file??
      print r.revisions[0].time #does this print the change time?

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

finally:
    p4.disconnect()

如果 r.depotfile returns 文件及其内容(相当于 p4 打印),我可以使用该文件进行进一步处理。有没有办法在仓库发生变化时定期执行此操作?请指出正确的方向。提前致谢。

你没有提到你在哪个平台上,但现在所有主要平台(Linux、Mac、Windows)都有一些 "cron" 或 "Scheduled Tasks" 功能,可以定期 运行 您的程序。

例如,我曾经有一个网站,每次将新文件签入 Perforce 时我都会更新该网站。我通过一个 运行 一分钟一次的计划任务和 运行 一个 'sync' 命令来做到这一点。如果没有签入新文件,则同步发现无事可做(因此,什么也不做);如果签入了新文件,同步会将它们复制到我的网络服务器的内容区域。

因此您可以编写一个程序,从 Perforce 获取有趣的文件,然后使用操作系统的 cron 或计划任务工具根据需要随时 运行 您的程序。