ブロガーの実験室スポンサー広告
> CVSリポジトリをGitに変換する利点とその手順> ブロガーの実験室パソコンな日々
> CVSリポジトリをGitに変換する利点とその手順
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


--.--.--|スポンサー広告||TOP↑
refer http://builder.japan.zdnet.com/news/story/0,3800079086,20410607,00.htm?tag=zdnw

CVSを使っていて、困った経験はないだろうか?この記事では、CVSリポジトリをGitに変換する利点とその手順を説明する。

最新特集【一覧】

 何週間か前、私は上流のCVSリポジトリか ら、複数のディレクトリにある複数のファイルを含むパッチセットを抽出しなくてはならない立場になっていることに気づいた。1回のコミットを、1つの簡単 に取り出すことのできるdiffにまとめるという、Subversionのコンセプトに慣れていた私は、今回バージョンコントロールの世界にどれほどの進 化があったのか悟り、ショックを受けた。

 例えば、CVSではコミットを行うと、各ファイルにそ れぞれ別のリビジョンが作成されるため、特定の時点のコミットで何が変更されたかをすべて知りたいとしても、リポジトリ全体のdiffを取ることはできな い。SubversionGitでは、3つのファイルを1度にコミットした場 合でも、変更された部分のdiffをまとめて取ることは簡単にできる。ところがCVSの場合は、同時にコミットされたもので あっても、まずそれら3つのファイルのリビジョンをそれぞれ調べ、それらのファイルのdiffを別々に取らなくてはならない。

 このことによって、CVSで複数のファイルに対する1つのパッチ を作成することは、よくて面倒、悪ければひどく腹立たしい作業になってしまっている。幸運なことに、git-cvsプラグインを使えば、CVSの リポジトリをGitのリポジトリに変換することが可能だ。この裏技を使うことによって、リポジトリに対して同時にコミットした複数のファイルを、1度に扱 うことができる。

 これを行うには、git-cvsプラグインをインストールする必要がある。Fedoraでは、yum install git-cvs cvspsを実行して、git-cvsパッケージをインストールすればよい(CVSのパッチセットを作成するには、 cvspsユーティリティが必要になる)。この作業が終わったら、次のように、Gitに対してCVSリポジトリを指定する。

$ git cvsimport -v -d :pserver:anonymous@cvs.sv.gnu.org:/sources/classpath classpath

 このコマンドは、cvs.sv.gnu.org:/sources/classpathにあるGNU Classpath CVSリ ポジトリを、./classpath/にあるGitのローカルリポジトリに変換する。変換しようとするCVSリポジトリの大きさによっては、この処 理に何時間もかかることがある(上記のコマンドは、終了までに約12時間かかった)。

 これが終われば、git logコマンドを使って、コミットの変更履歴を見ることができる。各ファイルのCVSバージョン番号はなくなっており、そ の代わり、コミットごとに、Gitがコミットを識別するために使っている一意の識別子が割り振られる。また、同時に複数のファイルを対象にしたコミット は、1つのコミットとして扱えるようになる。

 git logの出力を見れば、求めているチェンジセットのコミットIDを知ることが出来る。そのIDと、その直前のコミットのコミットIDをメモしておく。その 後、次のコマンドを実行すれば、そのチェンジセットのdiffを生成することができる。

$ git diff [new_revision] [old_revision]

 このコマンドの出力は、チェンジセット全体を1つにまとめたものになっている。1回のコミットで変更した複数のファイルの差分を、1つのコマンドで得る ことができれば、個々のファイルについて、それぞれリビジョンを調べ、それらのdiffを1つにまとめる場合よりも、はるかに時間を節約できる。ただしこ れは、最初にリポジトリの変換にかかる12時間を考慮に入れなければの話だ(公平を期すために記しておくが、今回の例で使ったリポジトリにあるデータは大 量で、変換されたリポジトリのgitのログだけでも、テキストで6Mバイトもある)。もちろん、cvspsツールだけでも、これらのパッチセットを作るこ とはできるが、Gitに変換することで、Git関連のほかの素晴らしい機能も使えるようになる。

 もしなんらかの理由で、CVSで行き詰まっており、まだ SubversionやGitに移行していないのであれば、変換ツールを使うことを検討してみるといいだろう。簡単に使え、非常にうまく動作する変換ツー ルがあるし、それで利用できるようになる機能は、切り替えるだけの価値のあるものだ。



2010.03.23|パソコンな日々コメント(0)TOP↑
名前:
コメントタイトル:
メールアドレス:
URL:
コメント:

パスワード:
管理人だけに表示:
管理者にだけ表示を許可
カテゴリー
最近の記事
最近のコメント
最近のトラックバック
ブログ検索
管理人のブログ一覧
管理人へメール

名前:
メール:
件名:
本文:

月別アーカイブ
プロフィール

やまもも実験室

Author:やまもも実験室
FC2ブログへようこそ!

RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。