Я думаю, что нашел потенциальное решение, поэтому я отвечаю сам.
Существует инструмент под названием Tailor , который может сделать именно это. Это универсальное решение, поэтому оно работает с большинством популярных систем контроля версий (таких как CVS, SVN, Bazaar, Mercurial, Git, Darcs и некоторые другие).
Чтобы выполнить то, что я просил, мне нужен следующий файл конфигурации, например freebsd-tailor.conf
:
[DEFAULT]
verbose = True
projects = freebsd-current
[freebsd-current]
root-directory = /home/tailor/freebsd-current
subdir = upstream
source = svn:freebsd-current
target = bzr:freebsd-current
start-revision = 225424
[svn:freebsd-current]
repository = svn://svn.freebsd.org/base
module = /head
encoding = iso-8859-1
[bzr:freebsd-current]
Затем я просто запускаю tailor -c freebsd-tailor.conf
, чтобы выполнить начальную синхронизацию на revno 225424, и перезапускаю команду каждый раз, когда я хочу постепенно получать новые изменения после этого.
Я сейчас проверяю это. Я буду обновлять свой ответ с любым успехом или неудачей. Другие решения по-прежнему приветствуются. :)
UPDATE:
Я сделал пример конфигурации немного проще и добавил запись encoding
, которая, похоже, требуется для многих проектов.
Результатом моего тестирования на данный момент является то, что tailor , к сожалению, не очень устойчив в больших проектах (например, в моем примере). В моем bzr-репозитории по какой-то причине отсутствует один подкаталог, а извлечение обновлений с помощью tailor выполняется очень медленно и занимает много ресурсов. Может быть, он отлично работает с небольшими проектами. Мне нравится, как портной имеет так много бэк-эндов для разных VCS и нейтрален в отношении их различий.