UNIX/Linuxの部屋 CVSチュートリアル応用編コマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド CVSチュートリアル応用編 複数人での開発・タグ・ブランチ このエントリーをはてなブックマークに追加

複数人での開発
CVS は一人だけで使ってもそれなりに便利であるが、複数人による開発でこそ実力を発揮する。

サンプルは基礎編に引続き hello モジュールとする。ファイル構成は以下のとおり。
hello/
hello/Makefile (リビジョン 1.1 とする)
hello/hello.c (リビジョン 1.1 とする)
まず作業場所を 2つ作ろう。workA/ と workB/ はそれぞれ A さんと B さんの作業場所と仮定する。
% mkdir workA workB
% (cd workA; cvs checkout hello)
% (cd workB; cvs checkout hello)
CVS は、基本的にはロックという概念がないため、複数人が同時にチェックアウトすることができる。一方、Microsoft のバージョン管理ツール VSS (Visual Source Safe) では、チェックアウトしたファイルはロックがかかり、他の人は同じファイルをチェックアウトすることができなくなる。

まず、A さんが workA のファイルを修正し、コミットしたとする。
Aさん% cd workA/hello/
Aさん% vi hello.c
⇒ A さんが workA/hello/hello.c を編集した
Aさん% cvs commit hello.c
⇒ コミット
ここで workA/hello/hello.c はリビジョン 1.2 にあがるが、workB/hello/hello.c はリビジョン 1.1 のままである。ファイルがコミットされたからといって、他の人がチェックアウトしたファイルが勝手に更新されるようなことはない。

B さんが workB の状態を確認したとする。
Bさん% cd workB/hello/
Bさん% cvs status
===================================================================
File: hello.c           Status: Needs Patch

   Working revision:    1.1     Sat Jul 30 14:26:13 2005
   Repository revision: 1.2     /home/68user/cvsroot/hello/hello.c,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
ステータスが「Needs Patch」となっているので、手元のファイルが古いことがわかる。また、「Working revision」「Repository revision」により、手元の作業領域の hello.c はリビジョン 1.1 であるが、リポジトリの hello.c はリビジョン 1.2 に更新されたことがわかる。

いつ・誰が・なぜ更新したかは cvs log で確認できる。
Bさん% cvs log hello.c
Working file: hello.c
head: 1.2
----------------------------
revision 1.2
date: 2005/07/30 20:23:30;  author: Aさん;  state: Exp;  lines: +2 -2
メッセージが気にいらないので修正。
B さんが、A さんが行った修正をとりいれたい場合は、cvs update を使う。
Bさん% cvs update hello.c
U hello.c
これで最新版に更新された。念のため cvs status を実行して、ステータスが「Up-to-date」になっていることを確認しよう。

マージと衝突 (コンフリクト)
未稿。

タグ
未稿。

ブランチ
未稿。