我正在使用pysvn监视Subversion目录中的更改。 这就是我从修订版中获取信息的方式:
(...)
svn_root = "http://svn/"
client = pysvn.Client()
from_revision = pysvn.Revision(pysvn.opt_revision_kind.number, 1500)
to_revision = pysvn.Revision( pysvn.opt_revision_kind.head )
revisions = client.log(svn_root, to_revision, to_revision, discover_changed_paths=True)
现在我想要的更改不是来自特定版本,例如我的示例,而是最近5次修订中的更改(从head - 5
到head
)。我怎么能做到这一点?我如何获得头部修订的NUMBER?
我可以通过从Python调用Shell来实现。但我想使用pysvn有一种“Pythonic”方式。
答案 0 :(得分:7)
知道了。当提供检出的SVN源的路径时,我可以像这样要求HEAD修订:
headrev = client.info(svnroot).get("revision").number
另一种选择是:
headrev = pysvn.Revision( pysvn.opt_revision_kind.head )
revlog = svnclient.log( url, revision_start=headrev, revision_end=headrev, discover_changed_paths=False)
headrev = revlog[0].revision.number
(注意,后者仅在您使用SVN存储库的根目录时才有效。如果您提供回购邮件的子网址,则revlog将为空不是HEAD本身)
答案 1 :(得分:6)
更好(更快)的方法是:
client.revpropget("revision", url=svn_url)[0].number
答案 2 :(得分:3)
您可以获得以下主题修订号:
client = pysvn.Client()
headrev = client.info(svn_url).revision.number
然后,您需要根据需要定义修订:
from_revision = pysvn.Revision(pysvn.opt_revision_kind.number, headrev -5)
to_revision = pysvn.Revision( pysvn.opt_revision_kind.head )
最后,您可以在循环中使用日志输出(列表)并提取所需的信息:
for l in log:
print i.date
print i.author