comparison software/CVS.md @ 0:e12992dca4a0

init from Growi
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 16 Dec 2020 14:05:01 +0900
parents
children b6c284fd5ae4
comparison
equal deleted inserted replaced
-1:000000000000 0:e12992dca4a0
1 # CVSの使い方
2
3 CVS は共同プロジェクトによるドキュメントやプログラム・コード等の管理を
4 行う便利なツールです。ゲーム班にまつわる全ては CVS によって管理されま
5 すので、CVSで始まりCVSで終わるといっても過言ではないでしょう。
6
7 ここでは CVSの使い方を例を挙げて説明します。
8 ただ、CVSをコマンドから直接打ち込むと面倒なので、cvs-cr というスクリプ
9 トを作って、それを使います。練習用のプロジェクトに
10 Game_project/Test/ 以下を用意しましたのでそちらを御利用下さい。
11 実際のゲーム作りではGame_project/ 以下にプロジェクトを作ります。特に
12 PS2 Linux向けのプロジェクトならば Game_project/ps2 を、GBA向けの
13 プロジェクトならば Game_project/gba をお使い下さい。
14
15 ここでは Game_project/Test/ 以下に test_program という仮想のプロジェク
16 トを作り、cvs-cr の使い方の例を挙げて説明することにしていきましょう。
17
18 ## つーかCVSって何だば?
19
20 簡単に言えばプロジェクト運営用のツールで、データベースのような機能を提
21 供します。
22
23
24 例えば、プロジェクトとして複数人で一つのプログラムのコーディング作業を行ったら
25 どうなると思いますか? もちろん誰が何を変更したか分かりませんので、
26 コーディングにバグが含まれていたら目も当てられませんね。
27 バグを忍ばせた人が誰なのかは全くわかりません。
28 よってチームの人間関係にヒビが入ります。
29
30
31 編集する前には cpコマンドとかで バックアップをとるのが妥当ですが、
32 cpでバックアップを毎回とるのですか? そいつはちと面倒です。
33 それ以前にバックアップ自体にバグが含まれていたら
34 チームの人間関係に莫大なダメージを与えます。
35
36
37 それと、よくある失敗で、
38
39 % rm -rf * (メガンテ!!)
40
41 という自爆技があり、これによりチーム全員が自爆します。
42 ホームディレクトリでやるとその効果は絶大です。
43
44
45 ということを防ぐためにCVSを使いましょう。習得は楽なので恐れないで下さい。
46
47 ## cvs-crの作りかた
48
49 奴はシェルスクリプトで、中身はこんな感じです。
50 locateかfindで探せば見付かるはずですが、まぁ取り敢えずここではcvs-crの作り方を説
51 明します。
52
53 cvs -d game@firefly.cr.ie.u-ryukyu.ac.jp:/home/one/CVS_DB $*
54
55 こんだけです。これを毎回打ち込むのはさすがに面倒なのでシェルスクリプトにするので
56 す。ここでは説明しませんが多分 alias でもいけますよ。
57
58 とりあえずcvs-crの作り方を説明します。取り敢えずエディタでcvs-crを書きましょう。
59
60 % vi cvs-cr
61 もしくは
62 % emacs cvs-cr
63
64 これで上記の一行を書いて終了なのです。それから忘れずに実行権を与えましょう
65
66 % chmod +x cvs-cr (ユーザの実行許可)
67
68 でもって /bin ディレクトリ作って cvs-cr を放りこんで下さい。
69
70 % mkdir /bin
71 % mv cvs-cr /bin
72
73 次に /bin に実行のパスを通してあげます。パスは tcsh なら /.tcshrc、
74 bash なら /.bashrc に書かれてますので、こやつに /bin の実行パスを追
75 加します。ここではtcshについて説明しますので適当にいじって下さい。
76
77 % emacs /.tcshrc (tcshの場合)
78
79 でもって、こんな感じの行を探してみましょう。
80
81 set path = (/bin /usr/sbin /sbin ...省略(他のbinへのパス)...)
82
83 こやつに追加します
84
85 set path = (/bin /usr/sbin /sbin ...省略(他のbinへのパス)... /bin)
86
87 編集が終わったら忘れがちなのがコレ!
88
89 % source /.tcshrc
90 % rehash
91
92 はい終了。簡単でした。でも実はこれだけじゃまだ設定不足で、環境変数の
93 設定が必要です。以下のcvsで用いる環境変数を読み下さい。
94
95
96 ## cvsで用いる環境変数
97
98 PS2Linux では cvs で用いる環境変数を /etc/bashrc , /etc/csh.cshrc で設
99 定しています。
100
101 もし, 出来んやっし! とか PS2 Linux以外の PC から CVS 使う場合は,
102 /.bashrc か /.tcshrc あたりを以下のように設定しましょう。
103
104 こっちは bash の場合
105
106 export CVS_RSH=ssh
107 export CVSEDITOR=/usr/bin/emacs
108
109 んで、こっちが tcshの設定です。
110
111 # CVS で用いるログインシェル. 本学科はsshを使うことになってます
112 setenv CVS_RSH ssh
113
114 # CVS で用いる エディタ. vi でなく emacs とか書くと ログの書き
115 # 込み時に勝手に emacs が起動します。日本語化け対策はeucで保存す
116 # ればOK !
117 setenv CVSEDITOR vi
118
119
120
121 ## 新規プロジェクトを開始する
122
123 まず、cvsリポジトリの Game_project/Test/ 以下に test_program と
124 いう新しいプロジェクトを作ります。新規プロジェクトを開始する場合
125 は import を使います。そのあとにオプションとして プロジェクト名、
126 ユーザ名、リリースタグを指定します。インポートするとエディタが起
127 動し、コメントを付けることができます。
128 以下を実行すると、カレントディレクトリ以下の(. .. 以外の) ファイ
129 ル・ディレクトリが Game_project/Test/test_program にリポジトリと
130 してに追加されます。
131
132 $ cvs-cr import Game_project/Test/test_program game start
133
134 ## プロジェクトをチェックアウトする
135
136 cvsリポジトリよりプロジェクトを入手(チェックアウト)します。
137 checkout を使います。
138 以下を実行すると、カレントディレクトリに
139 Game_project/Test/test_program ができます。また、ここで
140 Game_project/Test/ を指定すると、test_program だけではなく、
141 Game_project/Test/ 以下の全てのプロジェクトをチェックアウトでき
142 ます。
143
144 $ cvs-cr checkout Game_project/Test/test_program
145 または
146 $ cvs-cr co Game_project/Test/test_program
147
148
149 おまけとして、checkoutした時に上記の場合、Game_project/Test/test_program
150 というdirectoryが作成されますが、実際作業するのにわざわざtest_programまで
151 移動しなければならないので、これがめんどいって人は、-dオプションを使用しましょう。
152
153 $ cvs-cr co -d directory-name Game_project/Test/test_program
154 directory-nameの部分に任意の名前をつける。すると、test_program以下が
155 directory-nameの中にできます。まぁ必要ない人は使わなくてもいいけど、
156 リポジトリ階層がかなり深くなるとちょっと移動がめんどくなるので、
157 便利かと思います。
158
159 ## プロジェクトをコミットする
160
161 チェックアウトしたファイルなどに変更を加え、その変更をリポジトリ
162 にも反映させたい場合は commit を使います。ただし、新しくファイル
163 やディレクトリを追加した場合は add を用いてからコミットしてくだ
164 さい。コミットしたときに指定したエディタが起動して、コメントを付
165 けることができるので、変更箇所などの情報を書くといいでしょう。
166 作業用ディレクトリ(チェックアウトした test_program) で以下を実行
167 すると、変更を加えたファイルだけをリポジトリに反映します。特定の
168 ファイルだけをコミットしたい場合はオプションとしてファイル名
169 (file_name)を指定してください。
170
171 $ cvs commit [file_name]
172
173 ## リポジトリの変更を自分の作業用ディレクトリに反映させる
174
175 自分がチェックアウトした後に他の人がリポジトリに変更をコミットし
176 た場合、その変更を自分の作業用ディレクトリに反映させることができ
177 ます。その場合は update を使います。
178
179 $ cvs update
180
181 ##プロジェクトに新たにファイル・ディレクトリを追加する
182
183 プロジェクトに新たにファイルやディレクトリを追加する場合は作業用
184 ディレクトリで add を用いてからコミットします。add だけではリポ
185 ジトリにファイルができないので、コミットすることを忘れないで下さ
186 い。
187 以下のコマンドは、test_program 以下に新たに add_dir というディレ
188 クトリと add_file_1.c というファイル、add_dir の下の
189 add_file_2.c というファイルを追加します。
190
191 $ cvs-cr add add_dir add_file_1.c
192 $ cvs-cr add add_dir/add_file_2.c
193 $ cvs-cr commit
194
195 ##プロジェクトにタグ(マーク)をつける
196 プロジェクトをcheckoutする場合、開発における一定のポイントを取り出したいということが多々あります。そのとき、日付による取得とタグによる取得があります。ここでは、タグによる取得を紹介します。
197
198 「あ、あのときのリリースバージョンとりたい!」ということが起きたとしましょう。そのとき、日付やタグによる取得をしらないと「えーっと、file_1.cはversion1.1で、file_2.cはversion1.2でfile_3,cはーえっと..???」なんてことになってしまいます。
199
200
201 なぜそんなことがおきるのか?そう、CVSのバージョン管理はファイル別で行われているので(リポジトリ別ではない)、ファイルによって最新バージョンがバラバラになっていることがあります(例えば、file_1.cはversion1.1、file_2.cはversion1.2の様に)。
202
203 その問題を解決してくれるのが、タグ機能です。ある特定のポイントでタグをつけることにより、後でタグに指されたそれぞれバージョンのファイルをcheckoutすることができます。
204
205
206 さあ、使ってみましょう。現在、Game_project/Test/test_programをcheckoutして、そのディレクトリにいるとします。
207 - 以下はタグを付けるコマンドです。tagの後ろにタグ名を付けて下さい。
208 cvs tag [tag_name]
209 - 以下はタグの付いたポイントをcheckoutするコマンドです。
210 cvs-cr checkout -r [tag_name] Game_project/Test/test_program
211
212 ##プロジェクトを最新の状態にする
213 タグなどによって古いバージョンに戻したあと、再びプロジェクトを最新の状態にしたいとき。
214 cvs up -A
215 オプション"A"を忘れずに付けましょう。
216 ##で、CVSって何よ?
217
218 そんなあたなにプレゼント
219
220 [[CVSの使い方:http://nile.ulis.ac.jp/ yuka/memo/cvs.html]]
221
222 CVSについてさらに知りたければ、研究室にCVS関連の本がありますのでどうぞ。もしくは Let's google!!