[目次へ][3章本体へ][3.5へ][3.7へ] 最終更新:$Date: 2002/08/22 10:00:38 $

3.6としてchap3から分離。

[3.6]  [3.6.1]  [3.6.2]  [3.6.3]  [3.6.4]

図の差し替え終了。(2002/07/25)。


■■3.6 テキストファイルを追加してみる(add)

ファイルを追加するコマンドはaddです。ディレクトリの追加もaddでおこないますが、少し動作が違います。ディレクトリを追加する方法については、3.8節のupdateのところで詳しく解説します。 addコマンドの書式は【図3.6.1】のようになります。

【図3.6.1】addコマンドの書式
▼
cvs add [-k 展開方法] [-m メッセージ] ファイル群...
▲

addコマンドのオプションは少なくて2つしかありません。このうち、-kオプションはバイナリファイルを追加するときに使います。-mオプションはimportコマンドやcommitコマンドの-mオプションと同じで、登録時のコメントをつけるためのものです。ファイルの説明でもつけておいてください(実際、ファイルの説明というような意味合いの領域に保持されます。興味のある人は対応する,vファイルのはじめの方をチェックしてみましょう)。

テキストファイルとバイナリファイルとで動作が異なるので、この節でテキストファイルの説明をします。 バイナリファイルの取り扱いについては次の3.7節で説明します。

■■■3.6.1 ファイルを追加してみよう

何も入っていなくて寂しかったcvstestにaddコマンドを使用して、ファイルを追加してみます。無いものは登録できませんから、catコマンドでリダイレクトし、適当にファイルを作成してみます【図3.6.2】。text.txtという名前にしましょう【1行目】。そして、確かにできたのをlsで確認します【3-4行目】。

【図3.6.2】追加するファイルを用意用意、と
▼
% cat > test.txt
hogehoge
^D ←Ctrlキーを押しながらDキーを押す
% ls
CVS       test.txt
▲

しかし実は、このままでは、CVSにとっては謎のファイルのままです。つまり、今の状態でupdateコマンドを使うと「?」が頭についちゃいます【図3.6.3】。

【図3.6.3】CVSは知らないらしい…
▼% cvs update
cvs update: Updating .
? test.txt
▲

ですので、続いてaddコマンドで登録してあげましょう【図3.6.4】。

【図3.6.4】addコマンドでファイルを追加するぞ
▼
% cvs add -m "Test File" test.txt
cvs add: scheduling file `test.txt' for addition
cvs add: use 'cvs commit' to add this file permanently
▲

登録時のメッセージは、文字どおり"Test File"としました。-mで指定して登録です【1行目】。何かメッセージが出てきて「このファイルを永遠に(parmanently)追加したかったらcommitコマンドを使え」とかのたまわっています【3行目】。何が起こっているのでしょうか。ちょっとupdateしてみましょう【図3.6.5】。

【図3.6.5】何が起こってるの?
▼
% cvs update
cvs update: Updating .
A test.txt
▲

「?」が「A」に変わっています。何か変更されたのは確かなようです。 実はこのとき、作業用コピーにあるCVSディレクトリに変化が起きています。つまり、test.txtのための情報が追加されたのです。lsで眺めてみると、test.txt,tというファイルができています【図3.6.6】。

【図3.6.6】CVSディレクトリを覗いてみよう
▼
% ls -F CVS
Entries  Repository  Root  test.txt,t
% cat CVS/test.txt,t
Test File
▲

このファイルの中身はさっき-mで指定したコメントです。また、このときEntriesに1行追加されています。しかし、これはまだリポジトリの方には反映されていません。Entriesの該当行では、バージョン情報が0(ゼロ)で、日付の情報もありません。

cvstest/CVS/Entries: add前
▼
D
▲
cvstest/CVS/Entries: add後
▼
/test.txt/0/Initial test.txt//
D
▲

■■■3.6.2 これでファイル追加はできたの?

これでファイル追加はできたのでしょうか? 答えはいいえです。このファイルの追加という変更をリポジトリへ反映させるためには、コミットしないといけません。コミットしてみましょう【図3.6.7】。

【図3.6.7】ファイル追加をリポジトリに反映させる
▼
% cvs commit -m "First Commit for test.txt" test.txt
RCS file: /home/cvsroot/cvstest/test.txt,v
done
Checking in test.txt;
/home/cvsroot/cvstest/test.txt,v  <--  test.txt
initial revision: 1.1
done
▲

何が起こったのでしょうか。コミットすると、CVSの下のtest.txt,tファイルが消え、Entriesの中身にバージョンと日付情報が加わります。

cvstest/CVS/Entries: commit後
▼
/test.txt/1.1/Tue Aug 20 12:45:49 2002//
D
▲

コミットによって、test.txt,tは無くなり【図3.6.8】、

【図3.6.8】あ、test.txt,tが無くなった!
▼
% ls -F CVS
Entries  Repository  Root
▲

一方、リポジトリ/home/cvsroot/cvstestにはtest.txt,vが追加されます【図3.6.9】。

【図3.6.9】リポジトリに新しいファイルが追加されてる!
▼
% ls -RF /home/cvsroot/cvstest
/home/cvsroot/cvstest:
test.txt,v
▲

実は、【図3.6.7】のログメッセージにはこのあたりの操作の報告が含まれています。読んでみてください。

さてところで、ここで更新してみるとどうなるのでしょうか。やってみましょう【図3.6.10】。何もファイルが表示されません。もう変更は全てコミットされたので表示することもないのです。これで作業を中断して寝ても安心です。

【図3.6.10】さてまだ何かあるかな?
▼
% cvs update
cvs update: Updating .
▲

■■■3.6.3 WinCvsでファイルを追加してみよう

WinCvsでファイルを追加してみましょう。 まず、追加するためのファイルを作成しないといけません。テキストエディタか何かで、ファイルを作成してください。モジュールタブ上で見ると【図3.6.11】のようになるようにwintestにtmp2.txtを作成してみます。そして、作成したファイルを選んでおきます。CVSの知らないファイルには「?」マークのアイコンがついています。

【図3.6.11】 追加するファイルの用意、できてるかな?

追加すべきファイルが選択された状態でメニュー[修正]→[追加(Add)]【図3.6.12】を選ぶか、ファイルバーでテキストファイル追加アイコンを選びます。すぐ下とか隣にある[バイナリファイルとして追加](アイコン)が気になるかもしれませんが、ちょっと置いておいてください。バイナリファイルの扱いについては次の節で説明します。

【図3.6.12】 [修正]→[追加(Add)]メニュー

すると、アウトプット領域に【図3.6.13】のようなメッセージが現われ、

【図3.6.13】addコマンドのメッセージ
▼
cvs add tmp2.txt (ディレクトリ C:\home\mika\workcopy\wintest\ 内)
cvs add: scheduling file `tmp2.txt' for addition
cvs add: use 'cvs commit' to add this file permanently

*****CVS はコード 0 で終了しました*****
▲

【図3.6.14】のようにtmp2.txtのファイルアイコンが赤くなります。といっても相変わらずこの本では色はわかりませんが…。ともかく、よく見るとアイコンの中に「A」という文字が書いてあるのが分かります。3.5.2項でファイルを編集したときにも赤くなりましたが、文字は書かれていませんでしたね。これは要するに、コマンドラインのupdateコマンドで、「A」が出力されるのと同じ状態であるという意味です。

【図3.6.14】 赤くなった!しかも何か文字が書いてあるぞ?

この状態では、まだリポジトリには追加が登録されていません。上で見たように、CVS\Entriesが書き換わっただけです。これを「永遠に(permanently)」追加するために、コミットをおこないます。前3.5.2項をもう一度見直して、コミット作業をおこなってください。アウトプット領域に【図3.6.15】のようなメッセージ(コード0)が表示されれば成功です。

【図3.6.15】コミットのメッセージを確認しよう
▼
cvs commit -m "A new file." tmp2.txt (ディレクトリ C:\home\mika\workcopy\wintest\ 内)
RCS file: C:\home\cvsroot/wintest/tmp2.txt,v
done
Checking in tmp2.txt;
C:\home\cvsroot/wintest/tmp2.txt,v  <--  tmp2.txt
initial revision: 1.1
done

*****CVS はコード 0 で終了しました*****
▲

 

そして、【図3.6.16】のように赤かったアイコンが普通の白いアイコンに変更されます。


【図3.6.16】お、普通のファイルアイコンになったぞ

これで追加作業は完了です。どんどん追加してみてください。なお、フォルダの追加については、3.8節の更新についての説明をおこなうときに紹介します。


■■■3.6.4 まとめ

ファイルを追加する手順は次のようになります。

追加するファイルtarget_fileを作成
↓
cvs add -m "メッセージ" target_file
↓
cvs commit -m "メッセージ" target_file

次の3.7節ではCVSではちょっと特殊な扱いをするバイナリファイルについて説明します。