Bazaar: Автоматическая запись удаленной ревизии в удаленную ветку на push - PullRequest
0 голосов
/ 03 февраля 2012

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

Другими словами, существует ли аналогия / способ обхода start_push для start_commit?

Я хотел бы сделать это для того, чтобы разрешить расхождение локальных деревьев с их собственными версиями, сохраняя при этом отдельное управление версиями для «центрального» дерева. Таким образом, разные разработчики должны иметь возможность ветвиться с центрального сервера, а затем расходиться в своих локальных деревьях с помощью любых локальных коммитов и возвращать / объединять обратно. Все деревья должны автоматически и уникально версироваться путем комбинации последовательности дерева и его ревизии, которая записывается в файл, который является частью дерева. Например, (локальный xyz разработчика) commit с номером ревизии 127 дерева 'xyz' фиксирует 'xyz.127' в файле VERSION дерева. Тем не менее, нажатие этой ревизии в «центральном» дереве должно зафиксировать, например, «central.98» в центральном дереве (если последняя ревизия в «центральном» дереве была 97).

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

В качестве альтернативы, очень приветствуются другие установки, достигающие той же цели (расхождение локальных деревьев с их собственным версионированием и отдельным версионированием для «центрального» дерева)!

1 Ответ

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

Вам необходимо установить плагин на сервере, который регистрируется для ловушки post-change-branch-tip .

Не проверенный пример:

from bzrlib.urlutils import local_path_from_url
from bzrlib.osutils import pathjoin

def post_change_branch_tip_hook(params):
    root = local_path_from_url(params.branch.base)
    path = pathjoin(self.root, 'revno.txt')
    f = open(path, 'w')
    try:
        f.write('%s\n' % params.new_revno)
    finally:
        f.close()
...