開発中
モジュールがまだ開発中であり、不安定であることを示します。このリリースには、後方互換性や安定性の保証はありません。
バージョン番号は次のいずれかの形式を取ることができます:
擬似バージョン番号
v0.0.0-20170915032832-14c0d48ead0c
v0番号
擬似バージョン番号
モジュールがリポジトリでタグ付けされていない場合、Goツールはモジュール内の関数を呼び出すコードのgo.modファイルで使用するための擬似バージョン番号を生成します。
注意: ベストプラクティスとして、常にGoツールに擬似バージョン番号を生成させ、自分で作成しないようにしてください。
擬似バージョンは、モジュールの関数を消費するコードの開発者が、まだセマンティックバージョンタグでタグ付けされていないコミットに対して開発する必要がある場合に便利です。
擬似バージョン番号は、次の形式で示されるように、ダッシュで区切られた3つの部分を持ちます:
構文
baseVersionPrefix-timestamp-revisionIdentifier
部分
- baseVersionPrefix (vX.0.0またはvX.Y.Z-0) は、リビジョンの前にあるセマンティックバージョンタグから派生した値、またはそのようなタグがない場合はvX.0.0から派生した値です。
- timestamp (yymmddhhmmss) は、リビジョンが作成されたUTC時間です。Gitでは、これはコミット時間であり、著者の時間ではありません。
- revisionIdentifier (abcdefabcdef) は、コミットハッシュの12文字のプレフィックス、またはSubversionではゼロパディングされたリビジョン番号です。
v0番号
v0番号で公開されたモジュールは、メジャー、マイナー、パッチ部分を持つ正式なセマンティックバージョン番号を持ち、オプションのプレリリース識別子も持つことができます。
v0バージョンは本番環境で使用できますが、安定性や後方互換性の保証はありません。さらに、v1以降のバージョンは、v0バージョンを使用するコードの後方互換性を破ることが許可されています。このため、v0モジュールの関数を消費するコードの開発者は、v1がリリースされるまで互換性のない変更に適応する責任があります。
プレリリースバージョン
これはプレリリースのマイルストーン、たとえばアルファまたはベータであることを示します。このリリースには安定性の保証はありません。
例
vx.x.x-beta.2
モジュールの開発者は、ハイフンとプレリリース識別子を追加することで、任意のメジャー.マイナー.パッチの組み合わせでプレリリース識別子を使用できます。
マイナーバージョン
モジュールの公開APIに対する後方互換性のある変更を示します。このリリースは後方互換性と安定性を保証します。
例
vx.4.x
このバージョンはモジュールの公開APIを変更しますが、呼び出しコードを壊す方法ではありません。これには、モジュール自身の依存関係の変更や、新しい関数、メソッド、構造体フィールド、または型の追加が含まれる場合があります。
言い換えれば、このバージョンには、他の開発者が使用したいと思う新しい関数を通じた強化が含まれる可能性があります。ただし、以前のマイナーバージョンを使用している開発者は、他にコードを変更する必要はありません。
パッチバージョン
モジュールの公開APIやその依存関係に影響を与えない変更を示します。このリリースは後方互換性と安定性を保証します。
例
vx.x.1
この番号をインクリメントする更新は、バグ修正などの小さな変更のためだけです。消費コードの開発者は、コードを変更することなく安全にこのバージョンにアップグレードできます。
メジャーバージョン
モジュールの公開APIにおける後方互換性のない変更を示します。このリリースには、前のメジャーバージョンとの後方互換性があるという保証はありません。
例
v1.x.x
v1またはそれ以上のバージョン番号は、モジュールが使用に安定していることを示します(プレリリースバージョンには例外があります)。
バージョン0は安定性や後方互換性の保証をしないため、v0からv1にモジュールをアップグレードする開発者は、後方互換性を破る変更に適応する責任があります。
モジュールの開発者は、v1を超える番号をインクリメントする必要があるのは、必要な場合のみです。なぜなら、バージョンアップグレードは、アップグレードされたモジュールの関数を使用する開発者にとって重要な混乱を表すからです。この混乱には、公開APIへの後方互換性のない変更や、モジュールを使用する開発者がモジュールからパッケージをインポートするたびにパッケージパスを更新する必要が含まれます。
v1を超える番号へのメジャーバージョンの更新は、新しいモジュールパスも持ちます。これは、モジュールパスにメジャーバージョン番号が追加されるためであり、次の例のようになります:
module example.com/mymodule/v2 v2.0.0
メジャーバージョンの更新は、これをモジュールの以前のバージョンとは別の履歴を持つ新しいモジュールにします。他の人のために公開するモジュールを開発している場合は、モジュールのリリースとバージョン管理のワークフローの「破壊的API変更の公開」を参照してください。
モジュールディレクティブの詳細については、go.modリファレンスを参照してください。