Mercurial > hg > Document > Growi
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!! |