CVSの基礎練習

結城浩

バージョン管理ツールCVSの基礎練習です。 Windows XPのコマンドプロンプトでCVSの基本的なコマンドを動かしていきます。 CVSを学び始めるきっかけにどうぞ。

目次

はじめに

Windows XPのコマンドプロンプトで、 バージョン管理ツールCVSの基本的なコマンドを動かしてみましょう。

Windows XPのユーザで、 zipファイルが展開できて、環境変数を設定できる方なら、 この文書でやっていることを順番にやっていくと 基本的なCVSのコマンドをひととおり試すことができます(できるはずです)。

ダウンロードとインストール

CvsGui (www.wincvs.org)Downloadのページから、 Latest Recommended Release を選んでダウンロードします。 結城が試したダウンロードしたファイル名は WinCvs13b17-2.zip です。

ダウンロードした後ファイルを展開し、 setup.exeを動かしてインストールします。 インストール先はデフォルトのまま、 C:\Program Files\GNU\WinCvs 1.3 としました。

環境変数 PATH C:\Program Files\GNU\WinCvs 1.3\CVSNT を追加します。 これはインストールしたディレクトリになります。 この追加は、コマンドラインからcvs.exeを使うために行います。 設定後、コマンドプロンプトを起動しなおし、そのコマンドプロンプト内でのPATHを有効にします。

C:\home\cvsroot リポジトリにすることにします。

環境変数 CVSROOT :local:C:\home\cvsroot に設定します。 ドライブ名の前に :local: とつけていることに注意してください。

リポジトリと作業コピーの関係図

*

リポジトリ用のディレクトリを作ります

リポジトリ用のディレクトリを作ります。

C:\> mkdir home

C:\> mkdir home\cvsroot

リポジトリを初期化します

はじめにリポジトリを初期化します。 これはそのリポジトリを使いはじめる最初だけ実行すればよいです。

C:\> cvs init

新しいモジュールを作ってインポートします

新しいモジュールをリポジトリにインポートします。

ディレクトリとファイルを作成します

まずは作業場所を整え、readme.txtというファイルを作ります。

C:\> mkdir work

C:\> cd work

C:\work> mkdir myproject

C:\work> cd myproject

C:\work\myproject> echo This is readme file. > readme.txt      ※readme.txtを作った

C:\work\myproject> type readme.txt        ※内容の確認
This is readme file.

カレントディレクトリ以下を新しいモジュールmyprojectとしてリポジトリにインポートします

C:\work\myproject> cvs import -m "My Project" myproject hyuki myproject_0_1
N myproject/readme.txt

No conflicts created by this import

練習なので作業場所を削除します

C:\work\myproject> cd ..

C:\work> del myproject
C:\work\myproject\*、よろしいですか (Y/N)? y

C:\work> rmdir myproject

ここまでで、myprojectディレクトリの内容はなくなりましたが、 リポジトリにはmyprojectというモジュールがすでに登録されています。

チェックアウトして作業開始

myprojectモジュールをチェックアウトしよう

C:\work> cvs checkout myproject
cvs checkout: Updating myproject
U myproject/readme.txt

C:\work> cd myproject

C:\work\myproject> type readme.txt
This is readme file.

確かにreadme.txtが取り出せています。

差分を確認します

readme.txtファイルに一行追加してから、 リポジトリとの差分を確認してみましょう。

C:\work\myproject> echo Nice to meet you. >> readme.txt

C:\work\myproject> type readme.txt
This is readme file.
Nice to meet you.

C:\work\myproject> cvs diff               ※差分を見てみよう
cvs diff: Diffing .
Index: readme.txt
===================================================================
RCS file: c:\home\cvsroot/myproject/readme.txt,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 readme.txt
1a2
> Nice to meet you.

コミットすると編集結果がリポジトリに反映されます

作業コピーに加えた修正は、コミットしてはじめてリポジトリに反映されます。 コミットするときには、-mオプションで修正内容を書きます。

C:\work\myproject> cvs commit -m "Add a greeting."
cvs commit: Examining .
Checking in readme.txt;
c:\home\cvsroot/myproject/readme.txt,v  <--  readme.txt
new revision: 1.2; previous revision: 1.1
done

新しいファイルを追加します

リポジトリが修正されていないか確かめます

C:\work\myproject> cvs update
cvs update: Updating .

新しいhello.txtファイルを作ります

C:\work\myproject> echo Hello. > hello.txt

C:\work\myproject> type hello.txt
Hello.

新しく作ったファイルはリポジトリのほうには存在しません

C:\work\myproject> cvs update
cvs update: Updating .
? hello.txt                             ※?は「知らない」しるし

hello.txtを追加します

C:\work\myproject> cvs add hello.txt
cvs add: scheduling file `hello.txt' for addition
cvs add: use 'cvs commit' to add this file permanently

コミットしてリポジトリに反映します

C:\work\myproject> cvs commit -m "Add hello.txt."
cvs commit: Examining .
RCS file: c:\home\cvsroot/myproject/hello.txt,v
done
Checking in hello.txt;
c:\home\cvsroot/myproject/hello.txt,v  <--  hello.txt
initial revision: 1.1
done

C:\work\myproject> cvs update
cvs update: Updating .

新しいディレクトリを追加します

ディレクトリもファイルと同じように追加します

新しいディレクトリもファイルと同じように追加します。

C:\work\myproject> cvs update
cvs update: Updating .

C:\work\myproject> mkdir src

C:\work\myproject> cvs update
cvs update: Updating .
? src                                   ※?は「知らない」しるし

C:\work\myproject> cvs add src
Directory c:\home\cvsroot/myproject/src added to the repository

C:\work\myproject> cvs update
cvs update: Updating .
cvs update: Updating src

※ディレクトリはコミットしなくてもリポジトリに反映されます。

ディレクトリの中にファイルを作って追加します

C:\work\myproject> cd src

C:\work\myproject\src> ※ここで、エディタを使ってGood.javaを作成する

C:\work\myproject\src> type Good.java
public class Good {
    public static void main(String[] args) {
        System.out.println("Good");
    }
}

C:\work\myproject\src> cvs update
cvs update: Updating .
? Good.java

C:\work\myproject\src> cvs add Good.java
cvs add: scheduling file `Good.java' for addition
cvs add: use 'cvs commit' to add this file permanently

C:\work\myproject\src> cvs commit -m "Add a Java source file."
cvs commit: Examining .
RCS file: c:\home\cvsroot/myproject/src/Good.java,v
done
Checking in Good.java;
c:\home\cvsroot/myproject/src/Good.java,v  <--  Good.java
initial revision: 1.1
done

C:\work\myproject\src> cd ..

C:\work\myproject> cvs update
cvs update: Updating .
cvs update: Updating src

普段の作業はこんな風に進みます

C:\work\myproject> cvs update
cvs update: Updating .
cvs update: Updating src

C:\work\myproject> cd src

C:\work\myproject\src> ※ここで、エディタを使ってGood.javaを編集する

C:\work\myproject\src> type Good.java
public class Good {
    public static void main(String[] args) {
        System.out.println("Good!!");
    }
}

C:\work\myproject\src> cvs diff                     ※差分を見てみよう
cvs diff: Diffing .
Index: Good.java
===================================================================
RCS file: c:\home\cvsroot/myproject/src/Good.java,v
retrieving revision 1.1
diff -r1.1 Good.java
3c3
<         System.out.println("Good");
---
>         System.out.println("Good!!");

C:\work\myproject\src> cvs update
cvs update: Updating .
M Good.java                             ※Mは修正ありのしるし

C:\work\myproject\src> cvs commit -m "Add exclamations."
cvs commit: Examining .
Checking in Good.java;
c:\home\cvsroot/myproject/src/Good.java,v  <--  Good.java
new revision: 1.2; previous revision: 1.1
done

C:\work\myproject\src> cd ..

C:\work\myproject> cvs update
cvs update: Updating .
cvs update: Updating src

すべての作業が終わったら…

最後の最後、すべての作業が終わったら、 作業コピーを放棄します。 また、(必要に応じて)ディレクトリを削除します。

C:\work\myproject> cvs update
cvs update: Updating .
cvs update: Updating src

C:\work\myproject> cd ..

C:\work> cvs release -d myproject    ※-dは削除のオプション
You have [0] altered files in this repository.
Are you sure you want to release (and delete) directory `myproject': y

C:\work> cd myproject
指定されたパスが見つかりません。

この文書に書かなかったこと

メモ

関連リンク

更新履歴

ぜひ、感想をお送りください

あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

あなたの名前: メール:
学年・職業など: 年齢: 男性女性
(上の情報は、いずれも未記入でかまいません)

お手数ですが、以下の問いに答えてから送信してください(迷惑書き込み防止のため)。
今年は西暦何年ですか?

何かの理由でうまく送れない場合にはメールhyuki dot mail at hyuki dot comあてにお願いします。

豊かな人生のための四つの法則