【问题标题】:How to get head revision number of a file, or the changelist number when it was checked in / changed如何获取文件的头修订号,或签入/更改时的更改列表号
【发布时间】:2013-04-03 18:23:23
【问题描述】:
我正在编写一个每天连接到 perforce 的 python 应用程序。该应用程序在 perfoce 上获取 excel 文件的内容,对其进行解析,并将一些数据复制到数据库中。该文件相当大,所以我想跟踪应用程序上次在数据库上读取的文件的哪个版本,这样我可以检查版本号是否更高,如果文件没有更改,则避免读取文件.
我可以在最后一次签入/更改文件时获取修订号或更改列表号。或者,如果您对如何实现我避免不必要地读取文件的目标有任何其他建议。
我正在使用 python 2.7 和 perforce-python API
【问题讨论】:
标签:
python
python-2.7
perforce
【解决方案1】:
我想到了几个选项。
最简单的方法是始终让您的程序使用同一个客户端并让它同步文件。您可以让您的程序调用p4 sync 并查看您是否获得了新版本。如果你得到一个新版本,让它继续。这种方法的优点是您不需要记住上次运行程序的任何状态/版本。
如果您不喜欢使用固定客户端,您可以让您的程序始终检查相关文件的当前头版本:
p4 fstat //depot/path/yourfile |grep headRev | sed 's/.*headRev \(.*\)/\1/'
您可以将该版本存储在某个临时文件中以供下次程序运行,并每次比较版本。
如果您在固定时间运行程序(例如通过 cron),您可以检查上次修改时间(使用 p4 filelog 或 p4 fstat)以及时间是否介于上次运行时间之间和当前时间,那么您需要处理文件。这个选项有点复杂,因为你需要解析那些不同的时间格式。