[インデックス 10051] ファイルの概要
コミット
- コミットハッシュ:
da356dc3a96b505c1cc1d1e8459b5336ee1315a9
- 作成者: Andrew Gerrand adg@golang.org
- 日付: 2011年10月19日 11:51:32 +1100
- コミットメッセージ:
tag weekly.2011-10-18
- 変更概要:
.hgtags
ファイルに新たに2つのタグを追加
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/da356dc3a96b505c1cc1d1e8459b5336ee1315a9
元コミット内容
commit da356dc3a96b505c1cc1d1e8459b5336ee1315a9
Author: Andrew Gerrand <adg@golang.org>
Date: Wed Oct 19 11:51:32 2011 +1100
tag weekly.2011-10-18
R=golang-dev
CC=golang-dev
https://golang.org/cl/5292045
---
.hgtags | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.hgtags b/.hgtags
index 9fc608e052..c2ac5ed608 100644
--- a/.hgtags
+++ b/.hgtags
@@ -87,3 +87,5 @@ d7322ae4d055a4cf3efaf842d0717a41acd85bac weekly.2011-09-21
c1702f36df0397c19fc333571a771666029aa37e release.r60.3
c1702f36df0397c19fc333571a771666029aa37e release
acaddf1cea75c059d19b20dbef35b20fb3f38954 release.r58.2
+6d7136d74b656ba6e1194853a9486375005227ef weekly.2011-10-18
+6d7136d74b656ba6e1194853a9486375005227ef weekly
変更の背景
このコミットは2011年10月19日に行われた、Go言語の週次リリースプロセスの一環として実施されたタグ付け作業です。2011年当時、Go言語は正式版1.0の リリース(2012年3月)に向けて開発が進んでいましたが、その間は週次リリースシステムを採用していました。
この時期のGo言語は、開発の安定性を高めるために週次の不安定リリースから、より頻度の低い安定リリースへの移行を進めている段階でした。週次リリースシステムは、開発者が最新の機能を利用できる一方で、特定の時点での安定したバージョンを提供する役割を果たしていました。
Andrew Gerrandは、Google のGo言語チームの中核メンバーであり、このようなリリース管理作業を担当していました。彼はGo言語の開発初期から関わり、コミュニティとの連携やリリース管理において重要な役割を果たしていました。
前提知識の解説
Mercurial(hg)とは
Mercurialは分散型バージョン管理システムで、Go言語プロジェクトは2009年のオープンソース化から2014年まで使用していました。Mercurialが選ばれた理由は:
- Google Codeとの互換性: 当時Google Codeでサポートされていた最良のVCSであった
- コードレビューシステム: Googleが使用していたコードレビューシステム(Rietveld)との連携が良好
- 企業ポリシー: Googleが自社インフラで自社のオープンソースプロジェクトをホストする方針
.hgtagsファイルとは
.hgtags
ファイルは、Mercurialにおけるタグ情報を保存するファイルです:
- 構造: 各行にコミットハッシュとタグ名のペアが記録される
- 仕様: 追記専用(append-only)で、行の削除や編集は行わない
- 管理:
hg tag
コマンドを実行すると、このファイルが自動的に更新される - 優先度: 複数のブランチヘッドにある.hgtagsファイルがある場合、tipに最も近いタグが優先される
Go言語の週次リリースシステム
2011年当時のGo言語は以下のリリース体系を採用していました:
- 週次リリース(weekly): 大体週に1回作成される、最新の機能を含む開発版
- 安定リリース(release): より安定性を重視した、テストが充実したバージョン
- tip: 最新のコミット(開発の最前線)
開発者は以下のコマンドで異なるバージョンを使用できました:
hg update weekly
: 最新の週次リリースを使用hg update release
: 最新の安定リリースを使用hg update tip
: 最新のコミットを使用
技術的詳細
タグ付けの意味
このコミットでは、コミットハッシュ6d7136d74b656ba6e1194853a9486375005227ef
に対して2つのタグが付けられています:
weekly.2011-10-18
: 特定の日付(2011年10月18日)を示す週次リリースタグweekly
: 最新の週次リリースを指すシンボリックタグ
Mercurialのタグ管理メカニズム
Mercurialでは、タグは以下の方法で管理されます:
- ファイルベース: タグ情報は
.hgtags
ファイルに保存される - 分散管理: 各クローンが独自の
.hgtags
ファイルを持つ - コミット対象:
.hgtags
ファイルの変更も通常のコミットとして履歴に記録される - 追記専用: 既存のタグを変更する場合も、新しい行を追加する方式
リリース管理との連携
このタグ付けにより、開発者は以下のことが可能になります:
- バージョン指定: 特定の週次リリースを指定してチェックアウト可能
- 自動更新:
hg update weekly
で常に最新の週次リリースを取得 - 履歴管理: 各週次リリースの履歴を追跡可能
- リリースノート: 各週次リリースの変更内容を明確化
コアとなるコードの変更箇所
.hgtags ファイルの変更
@@ -87,3 +87,5 @@ d7322ae4d055a4cf3efaf842d0717a41acd85bac weekly.2011-09-21
c1702f36df0397c19fc333571a771666029aa37e release.r60.3
c1702f36df0397c19fc333571a771666029aa37e release
acaddf1cea75c059d19b20dbef35b20fb3f38954 release.r58.2
+6d7136d74b656ba6e1194853a9486375005227ef weekly.2011-10-18
+6d7136d74b656ba6e1194853a9486375005227ef weekly
具体的な変更内容
追加された行:
6d7136d74b656ba6e1194853a9486375005227ef weekly.2011-10-18
6d7136d74b656ba6e1194853a9486375005227ef weekly
既存の文脈:
- 前の週次リリース:
weekly.2011-09-21
(9月21日) - 複数の安定リリース:
release.r60.3
、release.r58.2
コアとなるコードの解説
タグエントリの構造
各行は以下の形式で構成されています:
<コミットハッシュ> <タグ名>
- コミットハッシュ: 40文字のSHA-1ハッシュ値
- タグ名: 人間が読みやすい名前(例:
weekly.2011-10-18
)
同一コミットへの複数タグ
同じコミットハッシュ6d7136d74b656ba6e1194853a9486375005227ef
に2つのタグが付けられていることに注目してください:
weekly.2011-10-18
: 特定の日付を示す固定タグweekly
: 現在の最新週次リリースを示すフローティングタグ
タグの意味と用途
固定タグ(weekly.2011-10-18
):
- 歴史的な記録として永続的に保持
- 特定の時点での状態を再現する際に使用
- リリースノートや変更履歴の参照に使用
フローティングタグ(weekly
):
- 常に最新の週次リリースを指す
- 開発者が最新の週次版を取得する際に使用
- 次の週次リリースが作成されると、新しいコミットを指すように更新される
リリースタイムラインの理解
.hgtags
ファイルから読み取れるリリースタイムライン:
- 2011年9月21日:
weekly.2011-09-21
- 2011年10月18日:
weekly.2011-10-18
(このコミット) - 約1ヶ月間隔: 週次リリースとしては間隔が長いが、これは開発の安定性を重視した結果
Mercurialの内部処理
このコミットが行われると、Mercurialは以下の処理を実行します:
- ファイル更新:
.hgtags
ファイルに新しい行を追加 - コミット作成: ファイルの変更を新しいコミットとして記録
- タグ認識: 新しいタグが有効になり、
hg update weekly
等で参照可能 - 履歴更新: リポジトリの履歴にタグ情報が永続化