【问题标题】:Perforce scripting : sync whenever remote depot's files are changedPerforce 脚本:在远程仓库的文件更改时同步
【发布时间】:2015-05-05 12:05:14
【问题描述】:

我有一个 perforce 客户端工作区和一个远程仓库。我正在尝试编写一个 Python 脚本,每当在该仓库中添加或更改新文件时,该脚本会定期将远程仓库同步到我的客户端工作区。我在这里查看了 P4P APIs 和一个非常有用的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 返回文件及其内容(相当于 p4 print),我可以使用该文件进行进一步处理。有没有办法在仓库发生变化时定期执行此操作?请指出正确的方向。提前致谢。

【问题讨论】:

    标签: python perforce


    【解决方案1】:

    您没有提及您在哪个平台上,但现在所有主要平台(Linux、Mac、Windows)都有一些“cron”或“计划任务”功能的概念,可以定期运行您的程序。

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

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

    【讨论】:

    • 听起来很有趣。我在 Windows 上。所以我想我将不得不使用一些 Windows 任务调度程序。顺便问一下,您是如何将同步的文件复制到其他地方的?
    • 只需将用于同步的客户端工作区的 Root: 目录设置为文件所需的目标目录,这就是同步文件的位置。也就是说,我有一个特殊的工作区,用于此网站更新任务。
    • 谢谢。顺便说一句,您在尝试运行 p4 同步时是否遇到过任何属性错误:记录器问题?
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2016-01-17
    • 2021-09-11
    • 2013-03-06
    • 2018-12-06
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多