2012年6月22日金曜日

Eclipse EGit によるタグの作成とプッシュ

バージョン管理システムにおけるタグとは、特定の時点でのリポジトリの状態です。一般的にソフトウェア開発ではリリースしたバージョンをタグとして保存することが多いようです。私の場合現在仕事でアジャイルで開発しており、イテレーションごとにタグを作成する方針を採っています。

Eclipse でEGitプラグインを使っていますので、タグの作成方法について書こうと思います。(使用しているのはEGit 1.3.0.201202151440-r です。)

Gitにおけるタグの種類

まず、Git のタグには3種類あります。(参考・・・Git公式サイト:2.6 Git の基本 - タグ
  • Lightweight (軽量)タグ
    特定コミットへの単なるポインタです。 
  • Annotated (注釈付き)タグ
    チェックサムが付き、タグを作成した人の名前・メールアドレス・作成日時・タグ付け時のメッセージを保持します。 
  • Signed (署名付き)タグ
    Annotated (注釈付き)タグにさらにGPG秘密鍵による署名を付与します。対応する公開鍵により検証を行うことができます。 

EGitがサポートするタグ

これらのうち、EGit でサポートされているのはAnnotated (注釈付き)タグのみです。とはいえ、公式ドキュメントでも Lightweight (軽量)タグよりもAnnotated (注釈付き)またはSigned (署名付き)タグの利用が推奨されていますし、GPGで署名を検証する必要がある場面は少ないと思いますので、Annotated (注釈付き)タグのみで十分な場合が多いでしょう。

なお、Lightweight (軽量)タグの作成は出来ませんが読み取りは可能です。Signed (署名付き)タグについてはサポート外とされています。(参考:Light-weight and Signed Tags | EGit/User Guide

タグの作成

タグを作成するにはプロジェクトを右クリック→チーム→拡張→タグ...とメニューをたどり、タグ名と注釈を入力して「OK」ボタンをクリックすればタグが作成されます。


タグを作成した後再度タグ作成のダイアログを開いてみると、作成したタグが追加されています。なお、アイコンに黄色い人のマークが付いているものが注釈付きタグ、黄色い人のマークがないものは軽量タグです。


ちなみに軽量タグが存在する理由は、もともとリポジトリをSVNサーバから移植した際に、SVNサーバ上のタグが自動的に軽量タグに変換されたからです。(前述のとおりEGit上では軽量タグを作成できません。)

タグのプッシュ

デフォルト設定ではローカルリポジトリに作成したタグはリモートにプッシュしないようになっています。これはEGitだからというわけではなくそもそもGit自体そういう仕様のようです。

設定は以下のメニューから変更します。プロジェクトを右クリック→チーム→リモート→アップストリームからプッシュ構成…(ちなみにどうでもいいですが「アップストリームからプッシュ構成…」って誤訳ですよね。正しくは「アップストリームへプッシュ構成…」だと思います。)

出てきた「プッシュ構成」ダイアログで「参照マッピング」の「編集…」ボタンをクリックします。


「Push Ref Specifications」ポップアップが出ます。「Add All Branches Spec」ボタン、「Add All Tags Spec」ボタンをクリックして設定を追加し、「完了」ボタンをクリックします。


参照仕様が追加されているのを確認し、「保管およびプッシュ」ボタンをクリックします。
これでローカルリポジトリに作成したタグがリモートにプッシュされます。

0 件のコメント:

コメントを投稿