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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 27 октября 2011

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

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

0 голосов
/ 26 октября 2011

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

...