Cube シリーズにおける Git のブランチ方針

CubePDF を始めとして、弊社にて公開している Windows デスクトップ・アプリケーションに関しては、原則としてソースコードを GitHub で公開しています。また、これらのアプリケーションが依存している .NET と呼ばれるフレームワークには複数のバージョンが存在しますが、Cube シリーズでは、依存するフレームワークのバージョン (TargetFramework) に応じてブランチを区切る戦略を採用しています。この記事では、Cube シリーズで共通して作成しているブランチの概要と、今後の方針について記載します。

Cube シリーズのブランチの概要

Cube シリーズでは、不定期に作成する トピックブランチ を除くと、master, net35, net45, net50 の 4 種類のブランチを作成しています。これらのブランチの違いは、各種プロジェクトの TargetFramework に設定およびそれに起因する実装の違いになります。例えば、CubePDF シリーズのリポジトリにおける各種ブランチと対応する TargetFramework は下記の通りです。

net50 ブランチに関しては、厳密には .NET Core 3.1 を TargetFramework としていますが、名前の簡便さを考慮して、このブランチ名としています。また、ライブラリ部分とアプリケーション部分で TargetFramework 設定が異なります(ライブラリ部分は .NET Standard 2.0)。

リポジトリ clone 時の推奨ブランチ

もし、ユーザーが Cube シリーズのリポジトリを clone する等して利用する場合、現時点での推奨ブランチは net45 ブランチとなります。

Cube シリーズの多くは、共有ライブラリとして別途開発しているものに依存していますが、master ブランチはこれらのリリーズ前バージョンに依存している事があります。この場合、ビルドを成功させるには共有ライブラリまで遡って自力でビルドを行って NuGet パッケージを作成した後、それらのパッケージを参照するように設定する必要があり、多くの労力を必要とします。

この状況を回避するため、旧来からリリース済バージョンのみで構成された状態のものを stable ブランチとして公開していましたが、後述する理由により、今回このブランチを net45 と言う名前に改める事とします。これに合わせて、推奨ブランチも stable から net45 に変更します。

ブランチに関する今後の方針

現在、.NET は大きく変化している最中にあります。具体的には、長年 Windows の標準として位置付けられていた .NET Framework から、クロスプラットフォーム対応を目的に開発がスタートされた .NET Core と呼ばれる別の .NET 実装に移行しつつあります。.NET Core は、現在は単に 「.NET」 と呼ばれるようになり、.NET 5.0 がその最新バージョンに当たります。

Cube シリーズでは、当面の間は、引き続き .NET Framework の方に依存するものを(少なくとも主要版として)リリースする予定ですが、将来的には、どこかのタイミングで .NET (.NET Core) に移行するものと予想されます。この時、各種リポジトリの master ブランチを net50 ブランチ系統に切り替える予定となっております。また、このタイミングで、clone 時等に利用を推奨されるブランチも net45 から net50 に変更される予定です。