Как получить ревизию ветки с помощью bzrlib

Я пытаюсь получить список коммиттеров в ветке bzr. Я знаю, что могу получить это через командную строку с чем-то вроде этого:

bzr log -n0 | grep committer | sed -e 's/^[[:space:]]*committer: //' | uniq

Однако я хотел бы получить этот список программно с помощью bzrlib. Изучив документацию по bzrlib, я не могу понять, как получить полный список ревизий из моей ветки.

Любые советы о том, как получить полную историю изменений из ветки с помощью bzrlib или, в конечном итоге, из списка коммиттеров?

2
задан 2 July 2013 в 14:37

2 ответа

Другой вариант - установить пакет bzr-stats и запустить следующую команду в каталоге филиала:

bzr stats
0
ответ дан 2 July 2013 в 14:37

Теперь я узнал, как это сделать. Я добавляю код для проверки локальной копии ветви, хотя это и не является строго необходимым (информацию о редакции можно прочитать из извлеченной локальной копии напрямую). Важными битами являются методы all_revision_ids(), get_revisions() и get_apparent_authors().

import os
from bzrlib.branch import Branch
from bzrlib.plugin import load_plugins

# The location on your file system where you want to check out
# the branch to get revisions for 
local_path = '/path/to/local/checkout'

# The name of the project you want to get the branch from
project_name = 'launchpad-project-name'

# Load the bzr plugins - the "launchpad" plugin 
# provides support for the "lp:" shortcut
load_plugins()

remote_branch_url = 'lp:{0}'.format(project_name)
remote_branch = Branch.open(remote_branch_url)

# Check out and get an instance of the branch
local_branch = remote_branch.bzrdir.sprout(
                   os.path.join(local_path,
                   project_name)).open_branch()

# Get all revisions from the branch
all_revision_ids = local_branch.repository.get_revisions(
    local_branch.repository.all_revision_ids())

# Set up a set of unique author names
authors = set()

# Iterate all revisions and get the list of authors
# without duplicates
for revision in all_revision_ids:
    for author in revision.get_apparent_authors():
        authors.add(author)

print 'Authors:', authors
0
ответ дан 2 July 2013 в 14:37

Другие вопросы по тегам:

Похожие вопросы: