[ 地球流体電脳倶楽部 / davis / Gfdnavi / doc / ForDeveloppers ]

Gfdnavi の CVS レポジトリーについて

CVSルートはdennou-k:/GFD_Dennou_Club/ftp/arch/davis/cvsroot、 プロジェクト名は gfdnavi である

参考資料

CVS レポジトリーの構成

幹である開発版メインと、リリース用に動作確認を旨とするリリースブランチ、 任意の個別開発用ブランチの3種類とする。なお、個別開発版ブランチはなる べく使わず、開発版メインを利用することを推奨する。個別開発用ブランチは 次のような場合の利用を想定している。

枝の分け方と名づけは次のようにする。

開発版メインを利用する/編集する。

checkout する場合、「幹」なのでタグの指定は要らない:

% cvs -d dennou-k:/GFD_Dennou_Club/ftp/arch/davis/cvsroot co gfdnavi

ブランチの作業用コピーを、幹のそれに切り替えたい場合は、

% cvs update -dA

リリース版作成・編集

個別開発版作成・編集

ブランチと幹(開発版メイン)の相互反映

基本は

である。

幹とブランチの両方にコミットしたい

残念ながら, 一発ではできないようである。現在作業しているのが幹のコピー であるなら, まず幹でコミットし, 次いでそれをブランチの作業ディレクトリ に取出してから, コミットする (逆もまた然り). 詳細は下記を参照のこと.

幹の変更をリリース版に(個別ファイル)

リリース版(RELEASE_0_1とする)の作業ディレクトリ内に, 反映したい版を取出す. 変更したいファイルが lib/tasks/setup.rake で, その最新版のリビジョン番号が 1.15 である場合、

% cvs update -j 1.15 lib/tasks/setup.rake

とする。これを次のようにコミットする。

% cvs commit -m "* merged from trunk (revision 1.15)" lib/tasks/setup.rake

なお、幹の最新版のリビジョン番号がわからない場合は、 別途幹をチェックアウトして (ブランチを指定せず普通にチェックアウトする), CVS/Entries ファイルを見ればよい (上の例なら lib/tasks/CVS/Entries を見る).

幹とブランチが一致するかどうかは、下記の方法で調べられる.

幹とブランチの違いを調べる

幹の作業ディレクトリで、次を実行する(ブランチ RELEASE_0_1 の場合)。

% cvs diff -u -r RELEASE_0_1

この場合、カレントディレクトリ以下の変更がすべて表示される. ファイル名を引数に与えて, 特定ファイルについて調べることもできる.

出力が長すぎれば次のようにすればいい(tcshの場合)。

% cvs diff -u -r RELEASE_0_1 |& egrep 'RCS|\+\+\+|\-\-\-'

リリース版を幹に反映する

(以下、ブランチ RELEASE_0_1 を反映させるとして説明する。) 幹の作業ディレクトリを最新に update し、まずは

% cvs diff -u -r RELEASE_0_1 | less

などで変更部分を眺めてみる。そして、次を実行する.

% cvs diff -u -r RELEASE_0_1 |& egrep '\-\-\-' | \
       ruby -ne 'a=$_.split; print "cvs update -j #{a[-1]} #{a[1]}\n"'

ただし、このリダイレクション (|&) は (t)csh の場合用である。 こうすると、次のように RELEASE_0_1 と差がある部分を取出すコマンドを表示する。

cvs update -j 1.2.2.1 ChangeLog
cvs update -j 1.78.2.2 app/controllers/analysis_controller.rb
cvs update -j 1.5.2.1 app/controllers/function_controller.rb
cvs update -j 1.34.2.1 app/models/analysis.rb
cvs update -j 1.1.2.1 app/models/function_argument.rb
cvs update -j 1.18.2.3 app/models/query.rb
cvs update -j 1.32.2.1 app/models/variable.rb
cvs update -j 1.8.2.1 app/views/description/variable.rhtml
cvs update -j 1.3.2.1 app/views/function/create.rhtml
cvs update -j 1.19.2.1 config/environment.rb
cvs update -j 1.31.2.1 db/register_directory_tree.rb
cvs update -j 1.2.2.1 public/javascripts/function.js

これらを打ち込めば、現在使っている幹の作業ディレクトリに ブランチの最新版が取出される。ただし、枝分け後に 幹のほうで編集が進んでいる場合はエラーになるので、手で修正が必要である。

取出し後、

% cvs diff -u -r RELEASE_0_1

で、ブランチと現在の作業用コピーとの違いをチェックし、 問題なければ、変更をコミットする:

% cvs commit -m '* Merged from branch RELEASE_0_1'

davis Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: unknown (unknown), Since: unknown (unknown)