Определение номера версии Bazaar из Python без вызова bzr - PullRequest
1 голос
/ 03 сентября 2010

У меня есть проект django (Python), который должен знать, в какой версии его код в Bazaar для развертывания. Это веб-приложение, поэтому я не хочу этого делать, потому что оно запускает новый подпроцесс и не масштабируется.

import subprocess
subprocess.Popen(["bzr", "revno"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

Есть ли способ проанализировать репозитории Bazaar для расчета номера версии? Сам базар написан на Python и содержит этот код для вычисления revno, что заставляет меня думать, что это не совсем тривиально.

rh = self.revision_history()
revno = len(rh)

Редактировать: окончательное исправление

from bzrlib.branch import BzrBranch
branch = BzrBranch.open_containing('.')[0]
revno = len(branch.revision_history())

Редактировать: окончательное исправление, но на этот раз реально

from bzrlib.branch import BzrBranch
branch = BzrBranch.open_containing('.')[0]
revno = branch.last_revision_info()[0]

Ответы [ 2 ]

4 голосов
/ 03 сентября 2010

Вы можете использовать API Bazaar bzrlib для получения информации о любом данном хранилище Bazaar.

>>> from bzrlib.branch import BzrBranch
>>> branch =  BzrBranch.open('.')
>>> branch.last_revision_info()

Больше примеров доступно здесь .

2 голосов
/ 03 сентября 2010

Сделайте это один раз и кешируйте результат (в БД / файл, если потребуется)?Я сомневаюсь, что версия сильно изменится.

...