使用 github 回购 public 会导致 Dist::Zilla 出现问题

Taking github repo public causes problems with Dist::Zilla

我有一个模块,是用 Dist::Zilla 构建的。我已将 Dist::Zilla 设置为自动将更改推送到我的 GitHub 存储库。当 repo 是私有的时效果很好。

但是,一旦我制作了回购 public,我就开始在构建过程中出现错误。具体来说,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 更改一些配置设置,以便它可以与 public 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]

您的 [Bugtracker] 条目会导致重复,因为您还通过 [GitHub::Meta] 设置了错误跟踪器。二选一。

关于版本号管理,注意[Git::NextVersion]是基于你的git标签。确保这些标签存在于您的本地存储库中并且格式正确。该插件使用类似于此的命令行调用来获取所有标签:

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

Public GitHub repos 对于 Dist::Zilla 应该不是问题——这正是大多数 dzil 发行版使用的设置。但是多个插件之间的交互可能导致难以追踪错误,特别是因为插件的顺序很重要。它可以帮助按 运行 所在的阶段组织插件,并测试在删除可选插件后问题是否仍然存在。从一个简单的 dist.ini 开始并随着开发过程中的痛点变得明显而添加插件往往会更好。