我怎样才能有效地获得 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")
我正在 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")