【问题标题】:pysvn export based on a date基于日期的pysvn导出
【发布时间】:2017-08-23 16:35:04
【问题描述】:

我一直在修改一个始终导出头部修订的现有程序,但我希望它更灵活,并根据日期/时间检查任何修订。 直接使用 SVN cli 这不会有问题,我会运行类似:svn log -r {start date}:{end date} --xml 并且我可以简单地将这些值设置为保证返回合理数量的值的范围并迭代结果以找到最大的修订。然而 pysvn 的 log、export 和 info/info2 函数都使用修订作为输入,这不是该工具的用户会知道甚至意识到的。

我的问题是,使用 pysvn 是否可以根据日期直接执行导出,或者是否可以至少确定在提供的日期之前提交的最后一个修订(最好不获取整个提交历史的日志)?

【问题讨论】:

  • 我想出了一个临时解决方案,它依赖于使用子进程执行的 svn log 语句(如果我找不到更好的 pysvn 答案,我会发布)。仍然希望有人可以帮助找到这个库的更好解决方案。

标签: python svn pysvn


【解决方案1】:

诀窍是在调用导出时使用日期修订。

以下是参考文档的摘录: http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_revision

pysvn.Revision - 颠覆修订版

Revision 对象有三个成员变量:

kind - the kind of revision, its value is one of the opt_revision_kind enumerations.
date - date and time when kind is opt_revision_kind.date, as seconds since the epoch which is compatible with python's time module.
number - revision number when kind is opt_revision_kind.number

界面总结:

import pysvn
import time

revhead = pysvn.Revision( pysvn.opt_revision_kind.head )
revdate = pysvn.Revision( pysvn.opt_revision_kind.date, time.time() )
revnum = pysvn.Revision( pysvn.opt_revision_kind.number, 4721 )

【讨论】:

  • 如此简单。当我之前尝试这个时,我一定错过了将日期转换为时间戳。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 2012-12-06
相关资源
最近更新 更多