RSpecのGitタグ命名規則を統一形式に変更
RSpec 4.0.0のリリースに向けて、各gemspecファイル内のGitHubリンクが統一されたタグ形式 v{version} を参照するように変更されました。これにより、beta/rc/正式リリースを通じて一貫したタグ参照が可能になります。
背景
RSpecプロジェクトはモノレポ構成を採用しており、rspec-core、rspec-expectations、rspec-mocks、rspec-support の4つのgemが単一リポジトリで管理されています。従来、各gemのタグには gem名を含む形式(例:rspec-core-v3.13.0)が使用されていましたが、4.0.0以降は統一されたバージョンタグ(v4.0.0)を採用する方針に変更されました。#309 はこの新しいタグ戦略に合わせてgemspec内のメタデータURLを更新しています。
統一タグの採用により、beta版やリリース候補版を含むすべてのリリースで同一のタグ形式を使用できるようになり、リリースプロセスの簡素化が期待されます。
技術的な変更
各gemspecファイルの metadata ハッシュ内で、changelog_uri と source_code_uri のURLパターンが変更されました。具体的には、タグ名から gem名のプレフィックスが削除されています。
変更前:
s.metadata = {
'changelog_uri' => "https://github.com/rspec/rspec/tree/rspec-core-v#{s.version}/rspec-core/Changelog.md",
'source_code_uri' => "https://github.com/rspec/rspec/tree/rspec-core-v#{s.version}/rspec-core",
}
変更後:
s.metadata = {
'changelog_uri' => "https://github.com/rspec/rspec/tree/v#{s.version}/rspec-core/Changelog.md",
'source_code_uri' => "https://github.com/rspec/rspec/tree/v#{s.version}/rspec-core",
}
この変更は以下のファイルに適用されています:
rspec-core/rspec-core.gemspecrspec-expectations/rspec-expectations.gemspecrspec-mocks/rspec-mocks.gemspecrspec-support/rspec-support.gemspecrspec/rspec.gemspec
タグ形式は rspec-{name}-v{version} から v{version} に統一され、パス部分(/rspec-core/Changelog.md など)でサブプロジェクトを識別する構造になりました。
設計判断
モノレポ全体で単一のバージョンタグを使用する方式 が採用されました。
PR本文には「4.0.0 beta/rc/release では統一された v4.0.0 タグを使用する」と明記されており、各gemに個別のタグを作成する従来の方式から、リポジトリレベルでの統一タグに移行する意図が示されています。この判断により、複数のgemを同時にリリースする際のタグ管理が簡素化され、リリースプロセス全体の複雑さが軽減されます。
モノレポ構成でありながらgem単位のタグを使用していた従来の方式は、各gemのバージョンが協調して進む実態と乖離していました。統一タグへの移行は、リポジトリ構造とバージョン管理戦略の整合性を高める判断といえます。
まとめ
本PRは、RSpec 4.0.0に向けたタグ命名規則の統一化を実現する変更です。gemspec内のメタデータURLを更新するだけのシンプルな修正ですが、モノレポ管理における一貫性を向上させ、今後のリリースプロセスの基盤を整えています。