Базар: bzrlib эквивалент "bzr info" - PullRequest
4 голосов
/ 03 февраля 2012

Я пытаюсь написать простой скрипт, который просматривает список каталогов, проверяет, контролируются ли они версией bzr, а затем сообщает мне, каков их статус - т.е. сколько файлов было изменено, добавлено и т. Д.

Я сделал это с помощью Python API bzrlib, и он отлично работает.

Мой последний камень преткновения пытался выяснить, как добраться до ствола, из которого произошла ветвь.

Сделать это в командной строке просто:

 bzr info

Однако, что эквивалентно в bzrlib?

В данный момент я открываю локации как рабочие деревья:

d = 'some directory'
wt = workingtree.WorkingTree.open(d)

Я склонен использовать «checkout» в своей работе, поэтому я искал бы что-нибудь, чтобы сказать мне местоположение ветви, из которой извлекается текущий экземпляр, например, из командной строки:

>bzr info dev
 Checkout (format: unnamed)
 Location:
    checkout dev: dev
 checkout of branch: bzr+ssh://bazaar.launchpad.net/....

Я хочу, чтобы последняя строка представляла собой строку, которую можно вставить в сценарий.

Заранее большое спасибо за ваше время

Приветствия

Dave

Для дальнейшего использования, для тех, кто заинтересован. Следуя подсказке в принятом ответе ниже, вот как получить информацию о bzr для использования местоположения 'd':

from bzrlib import repository, branch, workingtree, info
r = repository.Repository.open(d)
b = branch.Branch.open(d)
w = workingtree.WorkingTree.open(d)

bzr_info = info.gather_location_info(r,branch=b,working=w)

Возможно, есть более элегантный способ сделать это, и в этом случае не стесняйтесь добавлять комментарии здесь!

1 Ответ

2 голосов
/ 04 февраля 2012

Взгляните на следующие методы:

bzrlib.builtins.cmd_info
bzrlib.info.show_component_info
bzrlib.info.gather_location_info

в основном collect_location_info () даст вам информацию, но AFAICT вам нужно предоставить ему открытый репозиторий, ветку и рабочее дерево.

...