Каковы наилучшие методы обслуживания/тестирования (в основном Perl) программного обеспечения в отдельных репозиториях git с зависимостями между ними?

Я работаю над рефакторингом большой (в основном Perl) кодовой базы. Вместо того, чтобы помещать все в один гигантский репозиторий git, я бы хотел сгруппировать связанные модули и их тесты в отдельные репозитории git и иметь репозитории, структурированные как дистрибутивы CPAN.

Одна из проблем заключается в том, что если каждый репозиторий имеет отдельное дерево распространения CPAN, то использование подмодулей кажется неудобным, поскольку (в целях тестирования) мы действительно хотим включить «lib» каждого подмодуля в тесты. Это незначительная проблема, и я уже знаю о различных простых обходных путях («используйте lib...» в тестах), но я хотел бы знать, что другие разработчики делают в подобных ситуациях и что считается передовым опытом.

Более важным вопросом является то, как бороться с ветвлением. Если создается новая ветка подмодуля, а затем обновляется ветка, как я могу протестировать код в суперрепозиториях, которые зависят от него, для этой ветки? (Возможно, мне не обязательно захотеть вносить изменения в суперрепозитории, просто убедитесь, что изменения в подмодуле ничего не сломали.)

Аналогично, существуют ли утилиты, которые могут отслеживать зависимости между репозиториями git, чтобы я мог определить, какие суперрепозитории нуждаются в тестировании для ветки после изменения зависимости?


person Rob    schedule 26.10.2011    source источник


Ответы (2)


Поскольку программное обеспечение уже готово к работе с CPAN, просто объявите тестовые отсылки в метафайл дистрибутива. Другими словами, думайте о дистрибутивах, а не о репозиториях/ветках. Я думаю, вам не хватает чего-то вроде CPAN::Mini или DPAN, а также процесса упаковки и внедрения дистрибутивов.

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

person daxim    schedule 27.10.2011

Переменную среды PERL5LIB можно использовать, чтобы избежать добавления временных операторов use lib в ваши сценарии. перлран

person ikegami    schedule 26.10.2011
comment
Это на самом деле не отвечает на мой вопрос. Использование lib - незначительная проблема. (И PERL5LIB бесполезен в режиме taint, так что мне он все равно не пригодится.) - person Rob; 27.10.2011