CVSの使い方(実用編)

Written by Masahiko KIMOTO
Copyright (c) 1999 by Masahiko KIMOTO.

はじめに

CVSの使い方、実用編のテーマはタグとブランチです。

開発にはけじめが大切

CVSには「タグ」と呼ばれるマークをつける機能があります。タグはあるバー ジョンのレポジトリにつける名前です。タグをつけておけば、そのタグがつい ている時点のソースコードを取り出したり、その状態と現在もしくは複数の状 態間の差分を取り出すことも簡単にできます。

具体的には、開発しているソフトウェアをリリースする際や大幅な変更を 加える直前にタグ付けをしておくのが一般的です。

けじめが必要な箇所ではタグをつけましょう、ということですね。

タグ付けは図で書いた方がわかりやすいですね。バージョンが順番に 新しくなっていくのなら以下のように、一本線になります。

[INITIAL] --> [VERSION_1_0] --> [VERSION_1_1] --> 
上記のようにタグ付けされている状態で、checkoutしたときに取り出されるの は、最新のもの(一番右の矢印の右側にあるバージョン)になります。タグを指 定してcheckoutすればそのタグがついた時点の内容が取り出せます。updateす れば、そのタグがついた時点の内容に追従できます。しかし、この状態では取 り出した内容は編集できません。

タグ付けをするには二つの方法があります。

直接レポジトリを操作する方法

cvs rtagコマンドを使います。 (執筆中)

現在のワーキングプレースを用いる方法

cvs tagコマンドを使います。 (執筆中)

みんなで作業

CVSでは複数の人が同時に編集作業をできます。 別の開発者が大幅な機能追加を行う場合や、一人で作業している場合でも 大幅な改変を始める場合は独立した作業の流れを作ったほうが便利です。 CVSではこれを「ブランチ」と呼びブランチにつけるタグを 「ブランチタグ」と呼びます。ブランチタグのタグの一種で、 同じような扱いかたをします。checkoutやupdateの時には タグと同じようにが、ブランチは作業の「枝」に対して つけるという違いがあります。普通のタグを指定してcheckoutした 場合は編集できませんが、ブランチタグを指定したcheckoutした場合は そのブランチに対して編集を加えられます。

同じく図で書くなら、以下のような構成ができます。

[INITIAL] --> [VERSION_1_0] --> [VERSION_1_1] --> 
                       \
                        \
                        [BRANCH_2_0] --> [VERSION_2_0] --> [VERSION_2_1] -->
上記の例の場合、VERSION_1_0を作った後、それを元にBRANCH_2_0という ブランチを作成します。このブランチではversion 2用の作業を行います(多分)。 以降このブランチではVERSION_2_0, VERSION_2_1と開発がすすみます。

ブランチを作成する方法も二つあります。

直接レポジトリを操作する方法

cvs rtagコマンドを使います。-bオプションを付ければブランチの作成に なります。

現在のワーキングプレースを用いる方法

cvs tagコマンドを使います。-bオプションを付ければブランチの作成に なります。

実例

先程ツリー構造を例にして、具体的に行う操作について説明します。
[INITIAL] --> [VERSION_1_0] --> [VERSION_1_1] --> 
                       \
                        \
                        [BRANCH_2_0] --> [VERSION_2_0] --> [VERSION_2_1] -->

まずモジュールを登録します。
% cvs import Module vender INITIAL

....

別のところではモジュールを取り出します。
% cvs co Module
% cd Module

さて、編集。編集。

編集した結果にVERSION_1_0というタグを付けます。
% cvs tag VERSION_1_0
同じ内容からBRANCH_2_0というブランチを作成します。
% cvs tab -b BRANCH_2_0

このあとversion1の作業をする人は、moduleを取り出して作業をします。
% cvs co Module
編集 編集

編集した結果にVERSION_1_1というタグをつけます
% cvs tag VERSION_1_1
編集 編集


上記とは並行して、version2の作業をする人はタグ名を指定して
モジュールを取り出します。
% cvs co -t BRANCH_2_0
編集 編集

編集した結果にVERSION_2_0というタグを付けます。
% cvs tag VERSION_2_0
編集 編集

さらに編集した結果にVERSION_2_1というタグを付けます。
% cvs tag VERSION_2_1

差分の作り方

(途中)

異なるタグのマージのしかた

(途中)

リリースの作り方

ソフトウェアを開発する以上はみなさんに使ってもらいましょう。 使ってもらう以上はパッケージを作りましょう。パッケージを作って リリースしましょう。といっても、ここではソフトウェアのパッケージング 手法についての解説はしません。それを始めると大変なことになるので。 CVSを使ってリリース作業を行うには簡単です。
% cvs export Module
exportの挙動はcheckoutをほとんど同じです。違うのはCVSディレクトリが 作成されないことです。パッケージ作成の常套句としてはこんな感じでしょう。
% cvs export -t RELEASE_2_0_0 Module
% mv Module Module-2.0.0
% tar zcf Module-2.0.0.tar.gz Module

Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Sun Sep 5 04:32:23 1999