exampl - みる会図書館


検索対象: BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術
14件見つかりました。

1. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

2 プ回クラミクをはしめよう ! 1.1 版となっている。 作成し、そのディレクトリを add してい 行すること。今日の日付が 2000 年 2 月 9 る。こうすることで、そのディレクト import コマンドの場合は、 import を 日なら日付を表すタグを用いて、 実行したディレクトリとその下に存在 リ名でリポジトリが作成されることに するすべてのファイルが登録される。 なる。すなわち、 $CVSROOT/exampIe2 % cvs tag SNAP ー 000209 が作成される。あとは ( 7 ) と同様に ところが、 add だとすべてのファイルや ディレクトリを指定する必要がある。 各ファイルを add していけばよい。 を実行することで、現在の時点のスナ 次のようにⅱ nd と xargs コマンドを使 ップショットのソースを表すタグとす 9 タグの設定 えば、すべてのファイルを登録するこ ることができる。 タグは、リリースを表す目的やスナ とができる。 また、リリース用のタグを設定する ップショットに付けるために使用され 場合は、 る。 import サプコマンドでは、べンダ ータグ、リリースタグを指定したが、 % cvs tag REL—OI これらはいずれも同じものである。 タグを設定するには、 tag サプコマン とかになるであろう。タグを設定する ドを使用する。このコマンドは、チェ コマンドには、もう 1 つ rtag がある。 ックアウトを行ったディレクトリで実 れはリポジトリ ( 書庫 ) を指定してタ % find —print ー xargs cvs add ただし、ファイルが多い場合は時間 がかかったりうまく実行できないかも しれない。ファイル数が 100 個程度な らだいじようぶだと思われる。ファイ ル数が多い場合は、 1 ファイル毎に cvs add を行う次のコマンドを使うとよいだ ろう。上記の通り実行すると、図 1 2 の ように表示される。これは、 . ディレク トリを登録しようとするためである。 これを避けるためには、図 13 のように して . を除けばよい。 8 リビジョン番号 1 .1 から始めるた めの登録 ( その 2 ) cvs 使いのべテランなら、 ( 7 ) の方法 は面倒だと思われるだろう。そこで、 もうひとつの方法を紹介する。 % mkdir &/work % cd &/work cvs checkout ー 1 % mkdir examp12 % cvs add examp12 % cd examp12 % cvs add example. c skipping cvs add : cannot add special file 図 12 find . -printl xargs cvs add の実行結果 % find —name -print ー xargs cvs add 図 1 3 を取り除く % cvs checkout —r SNAP ー 000209 exampl % cvs checkout —r REL—OI exampl % cvs export ーて SNAP ー 000209 exampl % cvs export —r REL—OI exampl 図 14 タグを指定してソースを復元する 図 15 expo 杙コマンドを使用する % cvs rtag —b —r REL—OI REL—OI—FIX exampl 図 16 ag コマンドを使用する % ls —FC -/cvsroot/exampl Attic/ Makefi1e,v % ls -/cvsroot/examp1/Attic NEWF ILE , v 図 17 add サプコマンドによって Attic ディレクトリに入れられる example . c,v % cvs diff example. c lndex : example . c RCS file : /usr/home/kogane/cvsroot/exampl/example. c,v retrieving て eVIS10 Ⅱ 1 . 2 diff —rl . 2 example . c 13a14 cvs checkout -1 . は、 $CVSROOT のデ ィレクトリだけをチェックアウトしてい る、 -1 オプションは $CVSROOT 以下の ディレクトリやファイルをリカーシプに チェックアウトしないオプションであ る。そこで、 exampIe2 ディレクトリを return 0 ; 図 18 di 幵サプコマントを使用する BSD magazine 2000 No. 3

2. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

図 33 のようにリビジョン番号が逆に なった場合は、リビジョン 1.4 と 1.6 の 間の変更を削除する意味になる。 変更履歴を見る 変更履歴を調べるためには log サプコ マンドを使用する。 ファイルを省略すれば、すべてのリ ポジトリについて表示する ( 表示結果 は省略する ) 。 : 3 + 3 ー 2 % cvs 10g 誰がチェックアウトしているかを見る チェックアウトの情報を表示するに + 0 ー 0 RCS file : /usr/home/kogane/cvsroot/exampl/example. c , v % cvs 10g example . c keyword substitution: kv myname : 1 . 1 . 1 start : 1 . 1 . 1 . 1 symbolic names : access list: locks: strict branch : head : 1 . 2 Working file : example. c total revisions: 3 ; description: revision 1 . 2 selected revisions date: 2000 / 01 / 26 15 : 59 : 44 ; first change ・ revision 1 . 1 date: 2000 / 01 / 26 14 : 45 : 28 ; branches : 1 . 1 . 1 ; lnitial revision revision 1 . 1 . 1 . 1 date: 2000 / 01 / 26 14 : 45 : 28 ; initial import . author : author : author : kogane ; kogane ; kogane ; state: state: state.• Exp ; Exp ; Exp ; lines : lines : は、 hist 。 ry コマンドを使用する 35 ) 。 同じリポジトリを他の人がチェック アウトしている状況を表示するには、 - a オプションを指定する ( 図 36 ) 。 ( 図 1 .3.2.3 1 .3.2.2 1 .3.2.1 RELOI_FIX ブランチ 図 34 log サプコマンドを使用する cvs history cvs history 0 01 / 26 16 : 31 cvs history M 01 / 26 16 : 31 =exampl= -/work/* 0 01 / 26 16 : 31 + 0000 kogane exampl 図 35 histo Ⅳコマンドを使用する + 0000 kogane exampl 0 01 / 16 03 : 53 + 0000 friend exampl =exampl= =exampl= -/work/* &/fwrk/* 図 36 history コマンドに - a オプションを指定する —C example . C A 01 / 26 15 : 59 + 0000 kogane 1 . 1 + 0000 kogane 1 . 2 example. c exampl example ・ c exampl &/work/exampl -/work/exampl 図 37 histo コマンドでコミットの履歴を調べる cvs status example. c Sticky Options : Sticky Date : Sticky Tag: Repository revision: Working revision : FiIe: example . c Status : 1 . 2 1 . 2 (none) (none) (none) LocaIIy M0dified Wed Jan 26 16 : 31 : 54 2000 /usr/home/kogane/cvsroot/exampl/example . c , v 7 イ 図 32 2 つのヨオプションによるマージ BSD magazine 2000 NO. 3 図 38 status コマンドを使用する

3. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

N exampl/example. c NO conflicts created by this import 図 6 工デイタを終了する 容となっている。 そこで、最後の行に initial import . などと入れること ( 図 5 ) 。 ファイルに書き込んでエデイタを終 わると、画面には図 6 のように表示さ れる。 これで、 $CVSROOT ディレクトリを 注 1 cvs コマンドは、一部のサプコマンドを除いて、チェックアウトしたディレクトリで行う必要がある。 a . out : ident a. out 図 7 ident を実行する $ld: example. c,v 1.1.1.1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ 見てみると、 % ls —FC -/cvsroot CVSROOT/ exampl/ checkout には、インポートで指定し % cd -/work % cvs checkout exampl cvs checkout : Updating exampl U exampl/example. c % ls —FC exampl % cd -/work exampl/ % 1s —FC -/work る。 と登録した example. c ファイルが置かれ れ、その下に cvs というディレクトリ リポジトリ名のディレクトリが作成さ が終われば、 work ディレクトリの下に たリポジトリ名を指定する。 checkout CVS/ % cd exampl example . c これで、 a. 。 ut という実行形式が作成さ れる。 次に、 RCS コマンドである ident を実 行する ( 図 7 ) 。これは、 rcs_id の中に ある文字列が表示されたものである。 a. out はバイナリファイルであるが、 $ld というキーを見つけて ident が表示する。 このようにリリースしたバイナリのバ ージョンも識別できるようになってい $ ld $ 以外にも置換されるキーワード がある。「その他の項目 (D 置換され るキーワード」を参照のこと。 5 コミット それでは、リピジョン番号がどのよ うに変化するか、試してみよう。 example. c をリスト 3 のように修正する。 修正は work/exampl ディレクトリで行 うが、そこで、バージョン管理システ ムに取り込むためのコマンドであるコ ミットを実行する注リ % cc example ・ c る。 となって、リポジトリの名称と同じデ ィレクトリが作成されている。そのデ ィレクトリの下には、 % 1s -/cvsroot/example example . C ,V このような新しいファイルがある。 の , v とついたファイルが、 RCS ファイル である。ファイルの属性はリードオン リーで修正できないようになっている。 4 チェックアウト CVS で、登録したファイルを取り出 すことをチェックアウトという。まず、 インポートしたのとは別のディレクト リに移動する。作業用のディレクトリ こでは work という名前 であるので、 のディレクトリとする。 BSD magazine 2000 NO. 3 マリスト 2 取り出した example.c example. c の内容を見るとリスト 2 のよ うになっている。 $ld$ が、ファイル名やリビジョン番 号、日付、時間、作成者、状態に置 き換えられている。これらの情報でバ ージョンを識別することができる。 では、これをコンパイルしてみよう。 #include く stdio . > This is CVS example file . $ld: example. c,v 1 . 1 . 1.1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ printf ( "This is CVS example program*n") ; main(int argc , char *argv ロ ) int ” $ 工 d : example. c,v 1 . 1.1.1 2000 / 01 / 26 14 : 45 : 28 kogane Exp static char rcs_id ロ

4. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

グを付ける。 —r REL_OI_FIX % cvs rtag REL—OI example この rtag はリポジトリに対してタグを 付けるので、チェックアウトしたディ レクトリで実行する必要はない。 設定したタグをチェックアウトコマ ンドで指定すれば、その時点のソース を再構成できる。 新しい別のディレクトリで図 14 のよ うに行えば、そのディレクトリ下の exampl には SNAP ー 000209 や REL 01 と タグを付けた時点のソースが復元され る。タグを付けてチェックアウトした ファイルは、修正したりファイルを追 加することができないので、チェック アウトを実行するよりは exp 。 rt コマンド を使用するほうがよいだろう ( 図 15 ) 。 export コマンドは checkout とほとんど同 じであるが、 cvs の管理ディレクトリ アウトを行う。 % cd exampl CVS checout cd -/fixdir exampl そこで、通常の修正や追加を行って、 コミットすればファイルが修正される。 % CVS commit % cvs add NEWFILE % cvs diff -c example 工 ndex : example . c . C RCS file : /usr/home/kogane/cvsroot/exampl/example. c , v retrieving revision 1 . 2 diff -c ーて 1 . 2 example . c 2000 / 01 / 26 15 : 59 : 44 * * * example . C example. c 2000 / 01 / 26 16 : 32 : 13 * * * 11 , 14 * * * * 11 , 15 1 . 2 十 printf ( "This is CVS example program*n't ) ; printf ( "first change*n" ) ; return 0 ; % cvs diff —u example. c lndex : example . c RCS file : /usr/home/kogane/cvsroot/exampl/example. c , v (cvs) が作成されない。 ブランチの指定 1 6 ) 。 REL-OI-FIX のタグが設定された せすにタグを付けることができる ( 図 rtag コマンドを使えば、チェックアウト % cvs tag —b REL—OI—FIX % cvs checout ーて REL—OI exampl を実行する。 して、そのディレクトリで tag コマンド バージョンでチェックアウトする。そ tag コマンドを使う場合は、まず古い 指定したタグはプランチタグとなる。 マンドに -b オプションを指定すると、 チを設定することである。 tag 、 rtag コ のもうひとつの重要な機能は、プラン ランチを指定する。 tag 、 rtag コマンド うためには、そのバージョンからのプ 古いバージョンを元にして修正を行 BSD magazine 2000 NO. 3 なら、新しいディレクトリでチェック 70 retrieving 1 . 2 diff ーⅡ—rl . 2 example. c example. c 2000 / 01 / 26 15 : 59 : 44 + + + example. c 2000 / 01 / 26 16 : 32 : 13 ー 11 , 4 + 11 , 5 1 . 2 printf ("This is CVS example program*n") ; 十 printf ( "first change*n" ) ; return 0 ; 図 19 - c オプションを使用する % cvs diff example. c lndex : example . c RCS file : /usr/home/kogane/cvsroot/exampl/example . c , v retrieving revision 1 . 2 diff —c ーて 1 . 2 example. c 2000 / 01 / 26 15 : 59 : 44 * * * example . c example. c 2000 / 01 / 26 16 : 32 : 13 * * * 11 , 14 * * * * 11 , 15 1 . 2 printf ( "This is CVS example program*n") ・ printf ( "first change*n") ; 十 return 0 ; 図 20 . cvs 「 c にオプションを指定した場合

5. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

2 プ回クラミ町クをはしめよう ! % cd % cvs checkout exampl % cvs rdiff ーて RELOI —r REL02 exampl cvs rdiff : Diffing exampl lndex : exampl/example. c diff —c exampl/example. c: 1 . 1 exampl/example. c: 1 .4 * * * exampl/example . c : 1.1 Wed Feb 9 21 : 54 : 34 2000 exampl/example. c Thu Feb 10 00 : 42 : 29 2000 * This is CVS example file . ! static char rcs_id ロ バイナリファイル ソースファイルと同時にバイナリフ ァイルも一緒に管理したいことがある。 このようなときは、次のように -kb オプ ションをつけて add を実行すればよい。 % cvs add —kb binary—file patch ファイルを作成する patch コマンドの入力になるファイル を作成することができる。 図 63 のようにすると、リリースタグ RELOI からメインツリーの先頭のバー ジョンとの差分が patch 形式で出力され る。当然、バージョンを 2 つ指定して 実行することもできる ( 図 64 ) 。 図 65 のように、標準ではコンテキス ト di 仕の形式で patch が作成される。 di 仕サプコマンドと同様に、 . cvsrc に % cat ~ / . cvsrc rdiff —u と記入するか、オプションで -u を指定 すればユニファイド di 幵の形式で出力さ れる ( 図 66 ) 。 $ld: example. c,v 1 . 1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ "$ 工 d: example. c,v 1 . 1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ " ; int main(int argc , char * argv ロ ) printf ( "This is CVS example program*n" ) ; CVS example file . This iS ! static char rcs_id ロ ー 2 , 16 ー $ld: example. c,v 1 . 4 2000 / 01 / 27 15 : 42 : 29 kogane Exp $ "$ld: example. c,v 1.4 2000 / 01 / 27 15 : 42 : 29 kogane Exp $ " ・ int main(int argc , char *argv ロ ) printf ("This is CVS example program*n") ; printf ("first change*n" ) ; printf ( "second change*n'l ) ; return 0 ; コミットした結果のファイルは更新さ % cvs admin ー 01.4 example. c れないので、「古いリビジョン番号のソ ースを取り出したい」で説明した リビジョンは直前のものでなくても削 update サプコマンドを使うか、 1 つ上の 除できる。危険なコマンドなので十分 リポジトリ名のディレクトリに移り、 注意して実行すること。 checkout を実行すれば前のバージョン のソースが得られる。 Windows での cvs の使用 Windows 版の cvs は、 ftp : //download. cyclic. com/pub/cvs— 1 .10/windows/cvs—1.10—win ・ zip で入手できる。これを zip 展開すれば、 実行形式のファイルが得られる。 zip フ ァイルを展開する Wind 。 ws 用のコマン ドは知らないが、 FreeBSD なら unzip と いう package がある。 % cvs admin ー 01.3 : 1 . 4 example . c のようにして、範囲を指定することも できる。 特定のリビジョン番号を削除しても % cvs update —A example . C または 注 3 ssh は正常に動作するが、説明が長くなるので省略する。 注 4 付録 CD - ROM の添付ファイル cvs. 1.10. di 仕 87 BSD magazine 2000 No. 3

6. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

% cvs update cvs update : Updating 図 24 競合か生じた場合 C example . c cvs update : conflicts found in example. c rcsmerge : warning : conflicts during merge Merging differences between 1 . 2 and 1 . 3 intO example. c retrieving revision 1 . 3 retrieving 1 . 2 RCS file : /usr/home/kogane/cvsroot/exampl/example . c ,v #include く stdio . h> マリスト 8 cvs update した結果 This is CVS example file . $ 工 d: example. c,v 1.3 2000 / 01 / 27 13 : 12 : 16 kogane main(int argc , char *argv ロ ) int static char rcs—id ロ printf ( " second change*n" ) ; くくくくくくく example . C printf ("first change*n") ; printf ( "This is CVS example program*n't ) ; return(O) ; return 0 ; % cvs diff -u —rl . 1 ーて 1 . 2 example. c lndex : example . c RCS file : /usr/home/kogane/cvsroot/exampl/example . C , V 1 . 1 1 . 2 14 : 45 . example. c,v 1 . 3 2000 / 01 / 27 ー 2 , 12 + 2 , 13 十十十 example . C 2000 / 01 / 26 15 : 59 : 44 example. c 2000 / 01 / 26 14 : 45. diff —u ー rl . 1 ー rl . 2 retrieving revision 1.2 retrieving revision 1 . 1 ・ 28 —static 十 static int char char This $ld: $ld: is CVS example file . example. c,v 1 . 2 2000 / 01 / 26 example. c , v 1 . 1 2000 / 01 / 26 14 : 45 : 28 kogane Exp 15 : 59 : 44 kogane Exp rcs-id ロ rcs-id ロ example. c,v 1 . 1 2000 / 01 / 26 example. c,v 1 . 2 2000 / 01 / 26 main(int argc , char *argv ロ ) printf ( "This is CVS example program*n 十 printf ('lfirst change*n 図 23 特定のリビション同士を比較する ・ 28 kogane Exp $ " ; 15 : 59 : 44 kogane Exp $ " ・ Exp $ 13 : 12 : 16 kogane Exp $ " ; % cvs checkout —j RELOI—FIX examp13 図 25 checkout に -j オプションをつける しくないときは、 cvs の - f オプションを 使用する ( 図 21 ) 。 リポジトリに登録された最新のソー スと比較するのではなく、ある特定の リビジョン番号のソースと比較する場 合はそのリビジョン番号を指定する ( 図 22 ) 。 - rl. 1 は - rl. 1 のように詰めて記 述してかまわない。 現在修正中のファイルではなく、特 定のリビジョン番号同士を比較するこ ともできる。表示をユニファイド di 仕形 「 ( 12 ) 競合したファイルの修正」と同 マージ時に竸合が生じたならば、 をつけて行う ( 図 25 ) 。 マージするなら checkout に一 j オプション てのファイルについてメインツリ プランチ RELOI FIX について、すべ からコミットを実行する。 れている。この部分を手動で修正して ゝ > > > > > > ' のマークで囲ま 競合が生じた部分は、 '< くくくくくく ' 、 イルはリスト 8 のようになる。 示している。 cvsupdate した結果のファ ン 1.3 としてコミットされていることを 1.2 で、すでに他の人によってリビジョ は、作業中のファイルのリビジョンが れば手動で修正する必要がある。図 24 ミットすれば済むが、競合が起きてい が起きない修正であれば、そのままコ 作業中のファイルにマージする。競合 他の人によってコミットされていれば、 することがある。 cvs update は、すでに じファイルを同時に複数の人間が修正 複数の人間で開発している場合、同 競合したファイルの修正 式として実行する ( 図 23 ) 。 72 BSD magazine 2000 No. 3

7. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

内容は FAQ 、 NEWS 、 README 、 の行末が \ r \ n ()R + (F) で UNIX では \n ルを試みたところできなかったので、 (LF) だということである。しかし、 ここでは 1.10 で説明する。コンパイル c v s . e x e 、 c v s . h t m I 、 p a t c h . e x e 、 これは cvs で自動的に変換されるので、 win32gnu. dll ファイルである。 は VisuaI C + + 5.0 で行った。 Wind 。 ws 単体でも使用できるが、 間題はない。ただし、日本語コードは 本来は、 cvs- 1.10 ディレクトリにあ こでは pserver モードでの使用法を説明 変換されない。 Windows でシフト JIS コ る cvsnt. mak を使って、 する。 server モードのほうが設定等は簡 ード、 UNIX 側は EUC コードとするパ 単であるが、 Wind 。 ws で正常に動作す ッチ注 4 を筆者が作成したので、必要で C> nmake /f cvsnt . mak る rsh コマンドを入手できないので、取 あれば利用されたい。これについては、 り上げない注 3 。 「 Windows での cvs コンパイル」で説明 で、コンパイルできるはすである。し Windows では、 DOS 窓ですべての操 する。 UNIX 側の cvs コマンドは特に変 かし、 cvsnt. mak に間違いがあるためコ 作を行う。 cvs. exe と win32gnu. dll を実 ンパイルできない。付録 CD-ROM に含 更する必要はない。 行 PATH のあるディレクトリに移動し、 まれるファイル cvs. 1.10. diff にパッチが 環境変数を設定すれば動作する。 Windows での cvs コンバイル 入っているので、 Windows でパッチを pserver モードの場合の設定は、図 67 あてるか、 UN Ⅸでパッチをあてたファ cvs のソースは のようになる。 HOME は適当なディレ イルを Windows にコピーして使用して ftp://download.cyclic.com/pub/cvs— クトリを指定すること。 ほしい。 1 . 10 / cvs ー 1 . 10. tar. gz Windows から UNIX のサーノヾーを使 用する場合に心配なことがひとつある。 から入手できる。現在の最新版は cvs ー それは、 Windows のテキストファイル 1.10.8. tar. gz である。しかし、 コンノヾイ C> nmake /f cvsnt . mak を行うと、 WinDebug\cvs. exe に cvs コマ ンドが作成される。リリースモードで コンパイルするには、 cvsnt. mak の % cvs rdiff —u —r RELOI —r REL02 exampl cvs rdiff : Diffing exampl lndex : exampl/example. c diff —u exampl/example . c: 1 . 1 exampl/example. c: 1 . 4 exampl/example. c : 1 . 1 Wed Feb 9 21 : 54 : 34 2000 + + + exampl/example. c Thu Feb 10 00 : 42 : 29 2000 ー 2 , 12 + 2 , 15 ⑩@ $ld: example. c,v 1 . 1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ $ld: example. c,v 1 . 4 2000 / 01 / 27 15 : 42 : 29 kogane Exp 十 * rcs-id ロ —static char rcs-id ロ + static char CFG=cvsnt Win32 Debug の部分を This is CVS example file . CFG=cvsnt Win32 Re1ease にすると、 WinRel\cvs. exe にコマンドが 作成される。 ダウンロードした c v s . exe では、 Windows 上で commit ログメッセージに シフト JIS 日本語コードが使えないのだ が、 VisuaIC + + 5.0 で再コンパイルする と使えるようになる。これは、うれし い副作用だ。 "$ld: example. c,v 1 . 1 2000 / 01 / 26 14 : 45 : 28 kogane Exp "$ 工 d: example. c, v 1 . 4 2000 / 01 / 27 15 : 42 : 29 kogane Exp $ " ; int main(int argc , char *argv ロ ) printf ("This is CVS example program*n") ; printf ("first change*n" ) ; printf ( "second change*nti) ; return 0 ; 十十十 図 66 ユニファイド di 升形式の出力 set CVSROOT= : pserver : cvsmng@uxsite : /usr/home/cvsmng/cvsroot s et HOME= c : *MYNAME 図 67 pserver モードの設定 82 BSD magazine 2000 NO. 3

8. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

同様に checkout CVSROOT として cvs commit で修正を行うほうがよいだろ もう 1 つの方法は、 cvswatch コマン ドと CVSROOT/notify ファイルで行うも のである。この場合は、対象となるフ ァイルを指定する。 他で作成された c s ファイルを取り込 むには ,v ファイルを含めて、リポジトリ以 下のファイルがあるなら、単に CVSROOT 以下にコピーすればよい ( 図 60 ) 。 この後、適当なディレクトリで % cvs checkout othercvs を行えばよい。 古いリビジョン番号のソ - スを取り出 したい 以前のリビジョン番号のソースを取 tar cf り出すには、 update サプコマンドを使 用する。このコマンドは、 checkout し たディレクトリで実行すること。 % cvs update —rl . 1 example. c これだと、現在のファイルにリビジョ ン 1.1 のファイルが上書きされる。上書 きを防ぐには、 -p オプションを使って 標準出力に出力するようにする ( 図 61 ) 。 現在のファイルに上書きされた場合、 復元するには % rm example. c % cvs update example. c とすればよいように思える。しかし、 example. c ファイルはリビジョン 1.1 のま 80 BSD magazine 2000 No. 3 チェックアウトされる。 checkout すれば、最新のリビジョンが 効なので、他の場所でリポジトリを は checkout したディレクトリのみで有 ただし、 sticky Tag ( 張り付きタグ ) の先頭のリビジョンに戻す。 プション ) を取り去ってメインツリー き日付 ) 、 sticky options ( 張り付きオ ( 張り付きタグ ) や sticky Date ( 張り付 を実行する。 - A オプションは StickyTag % cvs update —A example. c なっているので、 StickyTag ( 張り付きタグ ) が 1.1 と ると図 62 のようになる。 まである。 status サプコマンドを実行す 修正を取り消したい コミットをした後、この修正を取り 消したいと思うことがよくある。 sccs にも、直前の修正を取り消す rmde に マンドがある。 cvs では、このような取り消しを行う 直接のサプコマンドは用意されていな いが、 admm サプコマンドで行うことが できる。 ただし、複数の人間で開発している 場合には、他の人間が u p d ate や checkout をしていると不整合が起こる ので、そのような場合は前と同じバー ジョンのソースでもう一度 commit する ほうがよいだろう。 コミットの結果のリビジョンが 1.4 な らば、次のように行う。 % cp または CVS CVS Fi1e : ーて othercvs &/cvsroot/ othercvs ー ()d &/cvsroot ー tar —xf update —p —rl . 1 example . c >out . example . c 図 60 CVSROOT 以下にコピーする status 図 61 example . c example . c Working revision : 1 . 1 Status : - p オプションを使う Thu Jan 26 16 : 10 : 19 2000 Up—to—date Repository revision: 1 . 1 /usr/home/kogane/cvsroot/exampl/example. c , v Sticky Tag : Sticky Date : Sticky Options : 1 . 1 (none) (none) 図 62 status サブコマンドの出力 % cvs rdiff % cvs rdiff —r RELOI exampl >exampl . patch. diff 図 63 patch を出力する ーて RELOI —r REL02 exampl >exampl ・ patch. diff 図 64 バージョンを 2 つ指定して patch を出力する

9. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

% cvs add example. c RCS file : /usr/home/kogane/cvsr00t/examp12/exampIe. c ,v CVS commit : % CVS commit —m ー registration. cvs add: use ー cvs commit ー tO add this fi1e permanently cvs add : scheduling file 、 example . c ー f0 て addition CVS : CVS : CVS : CVS : CVS : CVS : CVS : CVS : example. c,v 1 . 1 2000 / 01 / 26 Enter Log ・ Lines beginning Committing in Added Fi1es : Makefi1e with 、 CVS : are removed automatically 図 10 commit 後工デイタが起動する done Checking in example ・ c ; /usr/home/kogane/cvsroot/examp12/examp1e. c , v く一 initial revision: 1 . 1 done 図 11 add と commit を実行 example . C るための Makef ⅱ e である。これを登録 する ( 図 9 ) 。 cvs c 。 mmit を行って始めて登録され る。 % CVS commit 工デイタが起動され、図 1 0 のファイ ルが表示される。 new add. を行の最後 に追加し、エデイタを終わる。 MakefiIe はリスト 6 のようになる。 こで、気がついたかもしれないが、 マリスト 7 add と commit 後の example.c #include く stdio . h> This is CVS example file . imp 。 rt で初期登録したファイルのバー ジョンは 1.1.1.1 になり、次にバージョ ンアップすると 1.2 となる。バージョン アップを続けていくと、 1.1.1.1 1 .2 1.4 のようにバージョンがあが っていく。 cvsadd コマンドで登録する と最初のバージョンは 1.1 となり、これ をバージョンアップしていくと、 1.1 1.2 → 1.3 → 1.4 のようになる。 このように、最初のバージョンが 1.1.1.1 になるのがいやな人は、最初に 何もファイルが存在しないディレクト $ld: example. c,v 1.1 2000 / 01 / 26 16 : 10 : 19 kogane Exp $ static char rcs—id ロ int main(int argc , char *argv ロ ) 16 : 10 : 19 kogane Exp $ " ; リで import を行い、 checkout の後で add を行えば、最初のリビジョン番号が 1.1 から始められることになる。これにつ いては、 ( 7 ) で説明する。 add の逆に、管理からファイルを取 り除くには、 cvs remove コマンドを使 用する。 7 リビジョン番号 1.1 から始めるための登録 cvs init が終わった後、空のディレク トリを用意する。 % ls newdir % cd newdir そこで imp 。 rt コマンドを実行する。 % cvs import examp12 myname start 次に別のディレクトリでチェックアウ トを実行する。 % cd -/work % cvs checkout examp12 チェックアウトしてもファイルを何も 登録していないので、リポジトリ名の ディレクトリ ( と cvs ディレクトリ ) のみが作成される。次に、チェックア ウトしたディレクトリに移動する。 % ls —FC -/work examp12/ % cd -/work % ls —FC examp12 CVS / % cd examp12 そのディレクトリでファイル example. c を作成する。 % ls example . c example. c の内容はリスト 7 のように ( 図 1 1 ) 。 この時点で add と c 。 mmit を実行する 8 printf ( "This is CVS example program*n") ; BSD magazine 2000 NO. 3

10. BSD magazine No.3 BSDではじめよう! ; BSD日本語環境構築術

プ回クラミンクをはしめあ ! ファイルがたくさんあり、どのファ イルが変更されたかを知りたい場合に % cvs —n update は 修正していないかどうかの確認もでき を実行する。同じファイルを他の人が first change ・ 最後の行に を入力する ( 図 8 ) 。 工デイタが起動されるので、変更理由 % CVS commit る。 % cvs commit —m ー f irst change. ェデイタの起動が面倒なら、 なら入力することができる。 変更理由には、 EUC コードの日本語 了する。 とかを追加し、ファイルを書き込み終 こで、 example. c はリスト 4 のよう とすれば、エデイタが起動されすに実 になる。 行される。 リスト 5 は、 example. c をコンパイルす るには、 cvs add コマンドを使用する。 バージョン管理にファイルを追加す ファイルの追加 6 マリスト 5 Makefile CVS : CVS : CVS : CVS : CVS : CVS : CVS : CVS : Enter Log ・ Lines beginning with example . c Modified Fi1es: Committing in 、 CVS are removed automatically % cvs add MakefiIe cvs add : scheduling file CVS add : use ー CVS commit ー マリスト 3 example.c を修正する #include く stdio . > 図 8 変更理由を入力する 、 Makefi1e ー for addition tO add this file permanently 図 9 MakefiIe を登録する This is CVS example file . $ld: example. c,v 1.1.1.1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ main(int argc , char *argv ロ ) int "$ld: example. c,v 1 . 1 . 1.1 2000 / 01 / 26 14 : 45 : 28 kogane Exp $ " ; static char rcs—id ロ printr ("first change*n" ) ; printf ("This is CVS example program*n") ; #include く stdio . h> マリスト 4 コミット後の example. c This is CVS example file. $ld: example. c,v 1 . 2 2000 / 01 / 26 15 : 59 : 44 kogane Exp $ "$ld: example. c,v 1 . 2 2000 / 01 / 26 15 : 59 : 44 kogane Exp $ " static char rcs—id ロ main(int argc , char *argv ロ ) int printf ( "first change*n" ) ; printf ( "This is CVS example program*n" ) ; マリスト 6 commit 後の Makefile exampl : example. c cc ー 0 $ * example Makefi1e $ld$ exampl : . C example ・ c cc ー 0 $ * example. c Makefi1e $ld: Makefi1e,v 1 . 1 2000 / 01 / 26 16 : 02 : 49 kogane Exp $ 2000 NO. 3 BSD magazi ne