我怎样才能有效地获得 python 中的 svn 提交的过滤列表?

How can I efficiently get a filtered list of svn commits in python?

我正在 python 中制作一个应用程序,它需要能够获取有关最新提交到 svn 存储库的信息(日期、作者、文件更改)。

我一直在尝试使用 svn 库,我的应用程序可以通过如下方式手动过滤来获取所需的信息:

import svn.local

repo = svn.local.LocalClient('/my/svn/repo')
for rel_path, entry in repo.list_recursive():
    revision = entry['commit_revision']
    date = entry['date']

问题在于它遍历存储库中的每个文件,获取文件的提交信息,并且在相当强大的机器上加载时间将近一分钟。

如果可能的话,我正在寻找某种方法来遍历提交列表,从最新修订开始,返回 N 个修订,其中 N 将由用户提供。

根据 documentation 有一个 log_default 方法可以让你更容易地做到这一点,甚至有一个选项 limit 可以用来获得 n 项。例如:

import svn.local

def print_commits(repo, limit=5):
    client = svn.local.LocalClient(repo)
    for commit in client.log_default(limit=limit):
        revision = commit.revision
        date = commit.date
        print("{}:{}".format(date, revision))

print_commits("repo")