v1.2.3
git のタグの命名規則として多くのプロジェクトが使用されているのを見てきました。私もいくつかの使用を見てきました1.2.3
。公式に承認されたスタイルはありますか、またはいずれかを使用するための適切な議論はありますか?
8 に答える
GitHub で有名な Tom Preston-Werner によるSemantic Versioningのバージョン 1.0.0 には、これに対処するサブ仕様がありました。
タグ付け仕様(SemVerTag)
バージョン管理システム (Git、Mercurial、SVN など) を使用してコードを保存する場合は、このサブ仕様を使用する必要があります。このシステムを使用すると、自動化されたツールでパッケージを検査し、SemVer 準拠とリリースされたバージョンを判断できます。
- バージョン管理システムでリリースにタグを付ける場合、バージョンのタグは "vX.YZ" である必要があります (例: "v3.1.0" )。
ただし、議論の後、これは削除され、 SemVer 仕様の最新バージョン(執筆時点では 2.0.0) に は存在しなくなりました。同じ場所でのその後のディスカッション スレッドはさらに深くなり、新しい"v1.2.3" はセマンティック バージョンですか? SemVer のブランチの FAQ に追加されmaster
ていますが、執筆時点 (2 年以上後) では、この変更は公式にリリースされた仕様にはまだ存在していません。
支配的な規則が 2 つあるようです (リリース自体に番号を付けるための合理的な基準も順守していると仮定します)。
v1.2.3
1.2.3
の利点はv1.2.3
、Git ドキュメント (および Mercurial ドキュメント) がその例でその形式を使用していること、およびLinux カーネルやGit自体などのいくつかの「権威」がそれを使用していることです。(前述のセマンティック バージョニングでは以前は使用されていましたが、現在は使用されていません。)
の利点1.2.3
は、gitweb または GitHub が、フォームの tarball または zip ダウンロードを自動的に提供できることです(そしてpackagename-$tag.tar.gz
、tarballに. または、直接 を使用して tarball のバージョン番号を生成することもできます。正式なリリース プロセスのない軽量プロジェクトの場合、これらの可能性は非常に便利です。また、セマンティック バージョニングは、バージョン番号付けの唯一の、または広く受け入れられている標準ではないことにも注意してください。また、GNOME などの注目すべきプロジェクトやその他の数え切れないほどのプロジェクトが、タグの命名を使用しています。package-v1.2.3.tar.gz
git describe
1.2.3
これらのポジションを統合するにはおそらく遅すぎると思います。いつものように、一貫性を保ち、理にかなっています。
更新:このコメントで述べたように、GitHub はタグから「v」を取り除いた tarball 名を提供するようになりました。
先行する 'v' の理由は歴史的なものです。古い SCCS (cvs、rcs) は、タグ識別子とリビジョン番号を区別できませんでした。リビジョン番号を検出できるように、タグ識別子は数値で始まらないように制限されていました。
私が知っていることではありません。
ただし、Git では、タグと同じ名前のブランチを同時に使用することはできません。そのため、作品1.1
用のブランチ " "がある場合1.1
は、タグ " 1.1
" を配置せず、たとえば " v1.1
"を使用してください。
プレフィックスなしでバージョンにタグを付ける新しいパッケージ マネージャーのアドバイスv
( PHP プロジェクト
のコンポーザーなど)。SemVer 2.0では、タグの指定については何もありません。競合を避けるために意図的に行われます。ただし、ドキュメントとテキスト参照に接頭辞を追加することをお勧めします。フルまたはドキュメントでは十分に冗長でエレガントなv
形式の例として。v1.0.4
version 1.0.4
ver. 1.0.4
私は基準を知りません。タグ名を選択するだけで、
VERSION = `git describe --tags`
私のビルドスクリプトで。したがって、タグの命名規則は、実際にはプロジェクトのバージョンの命名規則に依存します。
リリース固有の作業にはブランチとタグを使用し、続いて実際のリリースをそれぞれ使用します。
o---o-----o---o---o--- ... master
\ / /
\ / /
o-------o--- ... 1.6 branch
すべての開発者は、コミットしようとしている作業が master だけに適用できるのか、それともブランチにも関連するのかについて、頭の中で判断します。ブランチに加えられた変更はマスターにマージされますが、マスターの一部の変更はブランチには適用されません (つまり、この例では 1.6 リリースを意図していない変更)。
リリースの準備ができたら、タグを付けて最後にもう一度マージします。タグにはブランチと同じ名前を付けますが、「1.6-release」など、特定のバージョンに関する追加の識別子を付けます。または「1.6-beta」または「1.6-rc2」など。
... ------o---o---o--o---o--- ... master
/ /
/ /
... ---o------(*)--- ... 1.6 branch
1.6-release
私が知っているベストプラクティスはありません。ここにいくつかのリンクがあります:
- http://web.elctech.com/?p=79
- http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html#production-tagging
一般に、バージョニング ( 0.0.1
、v0.2.1
、...) は、いくつかの問題追跡と連携して、もっともらしいアプローチと見なすことができます。(..私は通常、v
接頭辞付きのタグ名を使用しますが.. @VonCの回答も参照してください)