ノード: Exporting For Public Distribution, 次: , 前: Tracking Third-Party Sources (Vendor Branches), 上: Advanced CVS



Exporting For Public Distribution

CVS は開発者にとっては良い配布機構なのですが、大部分のユーザがソフト ウェアを取ってくる時にはダウンロードできるパッケージを取ってくると思 います。このパッケージは一般には CVS の作業コピーではなくただのソー スツリーで、ユーザのシステムに合わせて簡単にコンフィギュレーション・ コンパイルができるようになっているものです。

しかし、CVS はパッケージを作るのに便利な機構を提供しています。 cvs export コマンドです。プロジェクトをエクスポート するというのは、プロジェクトの作業コピーをチェックアウトするのと同じ ようなものですが、CVS 管理サブディレクトリを抜きにして プロジェクトツリーをチェックアウトするというところが違います。これは つまり、作業コピーではなくソースツリーだけを取得したということになり ます。そのソースツリーはどこから来たものなのか、それらのファイルがど の CVS バージョンなのかわかりません。つまり、エクスポートされたコピー はダウンロードしてディストリビューションをほどいたときの状態と同じな のです。そのプロジェクトが作業コピーから直接コンパイルできるようになっ ているとすると(そしてそうなっているべきなのです!)、エクスポートされ たコピーもコンパイルできるはずです。

export コマンドは checkout と同じように動作しますが、 タグ名か日付を指定しなければいけないというところが違います。プロジェ クトにリリース名でタグをつけて、それに基づいてエクスポートしてみましょ う:

     floss$ pwd
     /home/jrandom/myproj
     floss$ cvs -q tag R_1_0
     T README.txt
     T hello.c
     T a-subdir/whatever.c
     T a-subdir/subsubdir/fish.c
     T b-subdir/random.c
     floss$ cd ..
     floss$ cvs -d /usr/local/newrepos -q export -r R_1_0 -d myproj-1.0 myproj
     U myproj-1.0/README.txt
     U myproj-1.0/hello.c
     U myproj-1.0/a-subdir/whatever.c
     U myproj-1.0/a-subdir/subsubdir/fish.c
     U myproj-1.0/b-subdir/random.c
     floss$ cd myproj-1.0
     floss$ ls
     README.txt  a-subdir  b-subdir  hello.c
     

export コマンドは作業コピーの中ではないところで起動されるので、 どのリポジトリを使うかを -d グローバルオプションで指定してや らなければならないことに注意して下さい。またこの例では、ディレクトリ 名をデフォルトのプロジェクト名ではなく、明示的に指定して (myproj-1.0)エクスポートしています。その名前で作業コピーが既 に存在しているからです。この状況は珍しいことではないと思います。

上の例のようにエクスポートコピーが作成されたあとは、プロジェクトが単 純なものの場合、次のようにすればリリースが完了します:

     floss$ tar cf myproj-1.0.tar myproj-1.0
     floss$ gzip --best myproj-1.0.tar
     floss$ ls
     myproj/   myproj-1.0/   myproj-1.0.tar.gz
     floss$ rm -rf myproj-1.0
     floss$ mv myproj-1.0.tar.gz /home/ftp/pub/myproj/
     

もちろん、これらのコマンドを全部手で走らせたりすることはめったにあり ません。cvs export はリリースやパッケージの処理をするスク リプトから呼ばれることが多いでしょう。公のリリースに先立っていくつか の「テスト」リリースをするような場合は、リリースパッケージを作成する 処理は高度に自動化されていることが望ましいと思います。