[目次へ][3章本体へ][3.4へ][3.6へ] 最終更新:$Date: 2002/08/20 16:26:59 $

3.5としてchap3から分離。

[3.5] [3.5.1] [3.5.2] [3.5.3] 

workcopyに移動したので反映。(2002/7/25)

WinCvsの初期設定の項については、後で参照を張る必要がある。


■■3.5 編集を反映してみる(commit)

これから日常作業に入るわけですが、なんといっても頻繁におこなう作業は、ファイルの編集後におこなうこの「コミット(=commit)」です。コミットは、作業コピーにおこなわれた変更をリポジトリに反映し、さらにその結果を作業コピーの方へ戻すという作業のことです。コマンドとしては、commitコマンドを使用します。【図3.5.1】に、commitコマンドの書式を書いておきましょう。

【図3.5.1】commitコマンドの書式
▼
cvs commit [-nRlf] [-m メッセージ|-F メッセージファイル] [-r リビジョン] ファイル群...
▲

commitコマンドのオプションで頻繁に使うのは、ログメッセージを書き出すための-mオプションです。指定しないとエディタが起動してきて強制的に要求されちゃいますしね。指定すると、importコマンドの-mオプションと同様に変更履歴の中にそのログメッセージが埋め込まれます。加えた変更の内容を忘れないように簡潔なログメッセージをつけるようにしてください。この例のメッセージには、あまり意味はないのですけどね。うけを狙ってもいいんですが、後がかなり恥ずかしいです。

ファイル1つ、または、いくつかのファイルをまとめてコミットすることができます。ディレクトリを指定すると、再帰的にディレクトリ以下をコミットします。ファイル、ディレクトリを指定しないと、カレントディレクトリ以下を再帰的にコミットします。

■■■3.5.1 編集してコミットしてみよう

とはいえ、何かファイルがないと編集はできませんので、cvstest2の方のファイル、tmp2.txtと、dir/tmp3.txtを使います。何でもよいのですが、ともかく変更を加えてください。変更後次のようにupdateコマンドを実行してみます(おまじない。3.7節で説明します)。

【図3.5.2】tmp2.txtとdir1/tmp3.txtを編集してみました
▼
% cvs update
cvs update: Updating .
M tmp2.txt
cvs update: Updating dir1
M dir1/tmp3.txt
cvs update: Updating dir1/dir2
▲

すると【図3.5.2】のように、出力されたファイル名の頭にM(Modifiedの意味)という文字がつきました。これが、リポジトリのファイルから変更されたファイルにつくマークです。CVSは変更のないファイルについては無視します。賢いですね。

この変更をリポジトリに反映させるために、コミットします【図3.5.3】。ファイル、ディレクトリを指定せずにcommitコマンドを実行してみましょう。-mオプションのメッセージには適当に"Commit Test"を指定しておきます。

【図3.5.3】初めてのコミット!
▼
% cvs commit -m "Commit Test"
cvs commit: Examining .
cvs commit: Examining dir1
cvs commit: Examining dir1/dir2
Checking in tmp2.txt;
/home/cvsroot/cvstest2/tmp2.txt,v  <--  tmp2.txt
new revision: 1.2; previous revision: 1.1
done
Checking in dir1/tmp3.txt;
/home/cvsroot/cvstest2/dir1/tmp3.txt,v  <--  tmp3.txt
new revision: 1.2; previous revision: 1.1
done
▲

【図3.5.3】のコマンドの出力を眺めてみると、tmp2.txtとdir1/tmp3.txtにそれぞれ対応するリポジトリ(home/cvsroot/cvstest2)側のファイルtmp2.txt,vとdir1/tmp3.txt,vのリビジョンが、1.1から1.2へ更新されていることが見てとれます。

ここで、tmp2.txt,v、dir1/tmp3.txt,vを見てみれば、変化が記録されている様子もみることができます。例えば、このとき発見された全ての変更について差分が取られ、それに-mで指定したのと同じメッセージ"Commit Test"がついているはずです。自分のおこなった変更がどのように管理されているか、覗いてみるのも楽しいでしょう。

■■■3.5.2 WinCvsでコミットしてみよう

3.4.3項でチェックアウトしたファイルwintest/tmp1.txtを適当に編集してみてください。【図3.5.4】の状態でファイルをダブルクリックするとテキストエディタが現れると思います。ごにょごにょといじって保存して眺めてみると、あれれ?さっきまで【図3.5.4】のようだったファイルのアイコンが、なんだか赤くなってしまいました【図3.5.5】。この本は白黒だから色は分かりませんけどね(笑。

【図3.5.4】このファイルを編集してみよう

【図3.5.5】なんだかアイコンが赤くなったぞ?

これが、このファイルに変更が加わっているという表示です。コマンドラインだといちいちupdateしないと確認できませんでしたが、WinCvsだと常時状況が確認できます。このあたりはGUIが便利ですね。コマンドラインにはコマンドラインの便利さがありますけどね。

Coution! 書込み禁止になってて保存できない!?

ここで編集後保存をしようとして失敗した人はいませんか?初期設定のところでも書きましたが、WinCvsは初期設定だと書込み禁止モードでファイルを取ってきてしまいます。なんか見た目が違うなあと思った人もいるのではないでしょうか。【図3.5.4】の状態で鉛筆マークのアイコンになっている場合には書込み禁止です。強制的に解除する方法もありますが、CVS的に真っ当なのは、editを使用して解除することです。目的とするファイルを選んだ状態で、メニュー[トレース]→[編集の開始]【図3.5.6】または[複数ユーザ]バーのエディットアイコンを選ぶことで解除できます。

【図3.5.6】 [トレース]→[編集の開始]メニュー

【図3.5.7】のようなメッセージがアウトプット領域に出て、になったら成功です。

【図3.5.7】editコマンド成功!

▼
cvs edit tmp1.txt (ディレクトリ C:\home\mika\workcopy\wintest\ 内)

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

また、マルチユーザで作業しているわけではないなら、そもそもこのモードそのものを、初期設定で解除しておくのも手です。その解除の仕方は、x.x.x項の初期設定のところで書きましたので、参考にしてください。

さて、このファイルをコミットしないといけません。まず、このファイルを選んだ状態にして、メニュー[修正]→[格納(coMmit)...]【図3.5.8】またはブラウズバーからコミットのアイコンを選択してください。

【図3.5.8】コミットのメニューはどこかな?

すると、【図3.5.9】のようなダイアログが現れるはずです。更新ログのところに何か好きなメッセージをいれて、[OK]を押してください。ここでは、きわめてやる気のない"A test"なんてメッセージを書いてますが、本来は変更をした理由を書きます。「どこどこを修正した」とかですね。

【図3.5.9】何かログメッセージを書かなきゃ…何にしよう。

アウトプット領域に【図3.5.10】のようなメッセージが出力され、問題なく(コード0で)終われば成功です。

【図3.5.10】無事にコミットされたかな?
▼
cvs commit -m "A test." tmp1.txt (ディレクトリ C:\home\mika\workcopy\wintest 内)
Checking in tmp1.txt;
C:\home\cvsroot/wintest/tmp1.txt,v  <--  tmp1.txt
new revision: 1.2; previous revision: 1.1
done

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

ここではファイルを選んでコミットしましたが、フォルダを選べば基本的にそのフォルダ以下の変更されたファイルが再帰的にコミットされます。

■■■3.5.3 まとめ

ファイルをコミットする手順は、次のようになります。

ファイルtarget_fileを編集
↓
cvs commit -m "メッセージ" target_file

次の3.6節ではリポジトリにより管理するファイルを増やす方法を解説していきます。