Публичное использование репозитория github вызывает проблемы с Dist::Zilla

У меня есть модуль, построенный с Dist::Zilla, я имею Dist::Zilla настроить автоматическое распространение изменений в моем репозитории GitHub. Прекрасно работает, когда репозиторий закрыт.

Однако, как только я сделаю репо публичным, у меня начнут появляться ошибки в процессе сборки. В частности, эти строки в dist.ini

[Bugtracker]
web = http://github.com/myaccount/%s/issues

Если я закомментирую эти строки, это работает. С этими строками я получаю сообщение об ошибке:

Duplication of element resources.bugtracker.web at /Users/me/perl5/perlbrew/perls/perl-5.24.1/lib/site_perl/5.24.4/Dist/Zilla.pm line 595.

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

Есть ли какой-то параметр конфигурации, который мне нужно изменить с помощью Dist::Zilla, чтобы он хорошо работал с общедоступными репозиториями github? Вот полный файл dist.ini:

name    = Module-Test
author  = me
license = Perl_5
copyright_holder = Me
copyright_year   = 2018

[Repository]
;[Bugtracker]
;web = http://github.com/sdondley/%s/issues
[Git::NextVersion]
[GitHub::Meta]
[PodVersion]
[PkgVersion]
[NextRelease]
[Run::AfterRelease]
run = mv Changes tmp && cp %n-%v/Changes Changes
[InstallGuide]

[PodWeaver]
[ReadmeAnyFromPod]
type = markdown
location = root
phase = release

[Git::Check]
[Git::Commit]
allow_dirty = README.mkdn
allow_dirty = Changes
allow_dirty = INSTALL
[Git::Tag]
[Git::Push]
[Run::AfterRelease / MyAppAfter]
run = mv tmp/Changes Changes

[GatherDir]
[AutoPrereqs]
[PruneCruft]
[PruneFiles]
filename = weaver.ini
filename = README.mkdn
filename = dist.ini
filename = .gitignore
[ManifestSkip]
[MetaYAML]
[License]
[Readme]
[ExtraTests]
[ExecDir]
[ShareDir]
[MakeMaker]
[Manifest]
[TestRelease]
[FakeRelease]

1 ответ

Решение

Ваш [Bugtracker] запись приводит к дублированию, потому что вы также настраиваете багтрекер через [GitHub::Meta], Выберите один или другой.

Что касается управления номерами версий, обратите внимание, что [Git::NextVersion] основан на ваших тегах git. Убедитесь, что эти теги присутствуют в вашем локальном хранилище и имеют правильный формат. Этот плагин использует вызов командной строки, подобный этому, чтобы получить все теги:

git rev-list --simplify-by-decoration --pretty=%d HEAD | grep -oE 'tag: [^,)\s]+'

Публичные репозитории GitHub не должны быть проблемой для Dist::Zilla - это именно та настройка, которую все равно использует большинство дистрибутивов dzil. Но взаимодействие между несколькими подключаемыми модулями может привести к трудным поискам ошибок, тем более что важен порядок подключаемых модулей. Это может помочь организовать ваши плагины по фазе, в которой они работают, и проверить, сохраняется ли проблема после удаления дополнительных плагинов. Также лучше начать с простого dist.ini и добавьте плагины, как болевые точки в вашем процессе разработки становятся очевидными.

Другие вопросы по тегам