MacCVS Pro


 

MacCVS Proに関する一般的な質問。

  1. CVSとはどのようなものか?どういった人々が使うのか?
  2. なぜソースコードを公開するのか?
  3. MacCvsと呼ばれるようなものは今までにもあったのではばいか?そういったものとは何が違うのか?
  4. なぜ公開されている cvs 1.9 ソースをCVSクライアントに使わないのか?
  5. MacCVS Pro と他のMacintosh CVSクライアントを同じソースツリー上で使えるのか?
  6. コマンドラインはどこにあるのか?cvs co -xyz this_tag that_tagを実行する事が必要なのですが。
  7. MacCVS Proを使ってリポジトリからファイルをさせるにはどうしたらいいのか?
  8. Kerberos/ssh 認証を必要とするサーバーとアクセスしなければならないのだが、できるか?
  9. アップデートする度に-49エラーに陥るが、何が間違っているのか ?
  10. ツリー上に現れていない'CVS'フォルダーはどのようなものか?削除してしまえるのか?
  11. ファイル全てにある'ckid'と 'mcvs'リソースは何の役に立つのか?
  12. CVSはソースコードやウェブページのメンテナンスにはとても役立つように思えるが、 CVSサーバーがあるのか ?
  13. MacCVS Proはどうやってリソースファイルのチェックインをうまく処理するのか ?
  14. CodeWarriorプロジェクトファイルについては?
  15. PhotoShopでファイルをセーブしようとすると、そのときまでのバージョンの情報が消えてしまうのはなぜか?
  16. RSH経由でMacCVS Proとコンタクトできないのはなぜか?
  17. なぜソースコードはこんな風になっているのか?どんな種類の書式なのか?
  18. 私はソースコードに多少の改良を加えたのだが、それをどこに送ればいいのか?
  19. ここには載っていないような質問がしたいとき、誰に尋ねれば良いか?

1. CVSとはどのようなものか?どういった人々が使うのか?

CVSというのは Concurrent Version Systemの略で、 多様な規模のソフトウェア開発に使われるシステムです。このシステムは、一つのプロジェクトにおけるファイルのリビジョンの記録を全てたどることができます。また、多数の開発者が同じソースベースで作業したり、同じソースツリーから同時に多数のバージョンのプロジェクトを進める事等を可能にします。

CVSは現在、商業的ソフトウェア開発に最もよく使われますが、ウェブサイトのメンテナンスに用いられる事も増えてきています。

CVSにおいて、クライアントとサーバーは通常、別々のコンピューターを使います。クライアントとサーバーは、ローカルネットワークあるいはインターネット上で通信します。 CVSサーバーのソフトウェ アはソースフォームで入手でき、ほとんどのUNIXでコンパイルできます。

CVSについての詳しい情報は、Cyclicのウェブサイト を見てください。

 

2. なぜソースコードを公開するのか?

私たちは MacCVS Pro は傑出したCVS クライアントであると自負し、できる限り多くの人々が無料でこれを利用できるようになることを願ってきました。そこで私たちはGNU General Public License の元に、MacCVSProをリリースしました。

フリーソフトウェアの精神から、私たちは喜んでそうするのですが、ソースコードをリリースすることも必要とされます。私たちは、ネット上で開発者がそのソースコードを改良を加えてくれることを望み、そしてそれがmaccvs.orgに還元されることを望みます。

3. MacCvsと呼ばれるようなものは今までにもあったのではないか?

確かに、今までにもいくつかのMacintosh CVS clientsが存在し、そのうちのいくつかは "MacCvs"と呼ばれてきました。MacCVS Proは目下のところコードを他と共有せず 、Mac OSのために Mike Ladwig, Matthias Neeracher, Alexandre Parenteau が開発した、MacCVSあるいは MacCVSClientと呼ばれるものには由来しません。

そういったものと区別するために、私たちは MacCVS Proという名称を選びました。

これらのクライアントには様々な違いがあります。MacCvs (GNU MacCVS を指します)はGUSIを使ってGNU CVSソースコードを移植したものです。 これはMacCVS Pro やMacCVSClientよりも本来のCVS に近いものです。ですから、CVSのいくつかの特徴がここにも見られます。

MacCVS ClientはPowerPlantで開発された、完全に独立した実装です。CVSのリビジョンを格納するために用いられるフォーマットは、 MacCVS Pro ともGNU MacCVSとも異なりなす。

4. なぜCVSクライアントに公開されているcvs1.9ソースを使わないのか?

MacCVS Proは、サーバーと通信したりディスク上のファイルを処理したりするための CVS エンジンバックエンドも含めて、ゼロから開発されたものです。モジュール化とパフォーマンスを考慮して設計されており、他のクライアントを使った時ほど互換性はありませんが、既存のコードの再利用においては優れています。MacCVS Pro はマルチスレッドのGUIであるために、オリジナルの GNU CVSソースコードを統合するために必要とされた労力は、大変意義深いものです。

MacCVS Pro 2.5 を始めとして、私たちは他のクライアントとの互換性をかなり高めていく予定です。バージョン2.5では、リビジョン情報や、 CVS 1.10ドキュメンテーション において公開された仕様を使ったデスク上のファイルを保存できます。これは、MacCVS Proが バージョン3.1以降の GNU MacCVS クライアント によってチェックされたソースツリーを使って動いているという事です。

5. MacCVS Pro を他のMacintosh CVSクライアントと同じソースツリー上で使うことはできるのか?

MacCVS Proは、他の Mac CVS clientsとは異なる方法でローカルソースツリーにCVS情報を保存しますので、MacCVS Proと他のMacintosh CVS クライアントを同じソースツリー上で使う事はおすすめできません。詳しくはこちらをどうぞ。

MacCVS Pro 2.5 を始めとして、私たちは他のクライアントとの互換性をかなり高めていく予定です。バージョン2.5は、リビジョン情報や、 CVS 1.10 ドキュメンテーションにおいて公開された仕様を使ったデスク上のファイルを保存できます。これは、 MacCVS Proがバージョン3.1以降の GNU MacCVS クライアント によってチェックされたソースツリーを使って動いているということです。

6. コマンドラインはどこにあるのか? cvs co -xyz this_tag that_tag を実行する事が必要なのですが。

現在のクライアントバージョンにはコマンドラインは存在しません。しかしながら将来的に開発が進み、コマンドラインを画面上に表示できる日が来るかもしれません。

7. MacCVS Proを使ってリポジトリからファイルを移動させるにはどうしたらよいか?

この点は、 MacCVS Pro 2.2以降のモデルでは実装済みです。 ただ、Action メニューからRemoveを選ぶだけです。

( MacCVS Pro 2.2の Adminサブメニューの下に表示されます。 )

8. Kerberos/ssh 認証を必要とするサーバーとアクセスしなければならないのだが、できるのか?

MacCVS Pro は現在Kerberos(KClient)サポートでコンパイルされています。詳細を知りたい方はビルドドキュメンテーションをご覧ください。 サードパーティ商業ソフトウェアを使ってSSHコネクション上でMacCVS Proを動かす事もできます。もしも別のプロトコル認証が必要でしたら、ソースやインプリメントをダウンロードして下さい。

9. アップデートする度に -49エラーに陥るが、何が間違っているのか?

アップデートやチェックアウトの際には、ファイルを安全に保管するために、全てのファイルに排他書き込みアクセスをする事が必要です。ですから、このエラーが起きるということは、あなたがソースかプロジェクトファイルをどこかで、(例えばCodeWarrior IDE のようなところで)開いてしまったのだと考えられます。

10. ツリー上に現れていない 'CVS' フォルダーはどのようなものか?削除してしまえるのか?

ツリー上に現れていないCVSフォルダーは、 MacCVS Pro が必要とする情報を保存していますので、削除してしまうことはできません。'CVS'フォルダーには3つのファイルがあり、例えばフォルダーのためのスティッキータグなどを保存しています。

もしあなたが現在ソースディストリビューションを作っており、ツリーから CVSインフォメーションを取り除きたいと考えているのならば、MacCVS Proの各ファイルにある 'ckid' 'mcvs' リソース、そしてCVSフォルダーを取り除くための、'Orphan files' メニューを使うといいでしょう。

11. ファイル全てにある'ckid'と'mcvs' リソースは何の役に立つのか?

繰り返しになりますが、それらは MacCVS Pro が必要とする情報を保存しているだけですので、そのまま放っておいて構いません。ビルドされたバイナリーからはがすこともできます。CodeWarrior IDEのMacOS Mergeツールを使えば、ある特定のタイプのリソースを無視する事もできますので、'mcvs' をそのリストに加えてもよいでしょう。

12. CVSはソースコードやウェブページのメンテナンスにはとても役立つように思えるが、 Macintosh用のCVSサーバーがあるのか?

確かに MkLinuxや LinuxPPCを Mac上で作動でき、CVSサーバーをインストールしたりできはしますが、Macintosh用のCVSサーバーはありません。これは簡単にできることです。 CVSサーバーソフトウェアは UNIX とWindows NTだけに利用可能なもので、それが私たちの知り得る全てです。詳しくは Cyclicのソフトウェアのページ をどうぞ。

13. MacCVS Proはどうやってリソースファイルのチェックインをうまく処理するのか?

CVS の起源はUNIXにあり、Macintoshシステムがファイルごとに二つのフォークをもち、一つがリソース、もう一つがその他のデータのために用いられているという事以外には私たちは何も知りません。 従って、私たちはバイナリーファイルと同様にリソースフォークを用いてファイルを扱わねばならず、サーバーに送るためのストリーミング用の全てのフォークをエンコードしなければなりません。 AppleSingle エンコーディング がそれに使われており、リソースフォークのあるファイルが-kb オプション付きでAppleSingleデータとしてサーバーに送られています。しかしながら MacCVS Proはアップデータの操作中、適切なデータを送るためにそのエンコーディングをローカルに保存する必要があり、そのデータは、あるファイルがAppleSingleとしてチェックインしたかどうかということを示すフラグのある、'mcvs'リソースに保存されます。

チェックアウトの際には、 MacCVS Proが、サーバーから送る バイナリーファイルのデータを、それをAppleSingleとしてチェックアウトさせるかどうかを決めるために'sniffs'(においを嗅ぐ)し、データやリソースフォークをデコードします。 これはデータの始めの部分のAppleSingleヘッダーをチェックすることによってなされます。こういったヘッダーを持たないファイルは、全て単なる( AppleSingleではない)バイナリーファイルとして取り扱われます。

MacCVS Proが異なるタイプのファイルをどのように取り扱うかを決めるのに、 'Encodings and File mappings'を使うことができます。一般的なルールとして、ソースファイルはテキストやリソースファイル、あるいは AppleSingleとしてのリソースフォークとデータの両方を含むファイルやその他のファイルとしてチェックされ、データフォークだけがバイナリーとして有用になります。 (例えば、GIFファイルやStuffItアーカイブス)

CVSサーバーはMacリソースファイルに使われる AppleSingleのエンコーディングについては何も関知しません。 CVSサーバーにわかっているのはそれがバイナリーファイルだということだけです。仮にあなたがクロスプラットフォームで開発を進めていて、他の (Windows, UNIXの)プラットフォームのエンジニアを抱えているとします。そしてその人がMacのリソースファイルをチェックアウトするときに、ある問題を引き起こします。 その人のCVSクライアント はAppleSingleのエンコードもデコードも決してやることはなく、ゴミ同然のバイナリーファイルしか手にすることができません。そのエンジニアにはそれらを修正することができないでしょうし、誤ってそんなファイルをチェックインしようものなら、 まずい事態を招いてしまうでしょう。

14. CodeWarriorプロジェクトファイルについては?                                      

IDE 1.7.4 、2.0間で、Metrowerks社が プロジェクトにおけるオブジェクトデータの保存の仕方に大幅な変化を加え、ソースコントロールが簡単になりました。IDE 1.7.4はオブジェクトデータ(コンパイルされたコード)をプロジェクトファイルに保存します。それで、それは非常に容量の大きいものになり、ソースコントロールシステムが常に変化しているように思えます。また、ニューバージョンでファイルやチェックを加えたい時には、たくさんのコードをリビルドしなければなりません。 CodeWarrior Pro 2 はこういった状況を劇的に改善し、全てのオブジェクトデータは<project>データフォルダに保存されているので、コンパイルするときにもプロジェクトファイルは勝手に変わってしまったりしません。プロジェクトファイルをレポジトリーにチェックインするだけで良く、全てのオブジェクトデータを外してしまわないでも他の方法で修正できます。

CodeWarrior Pro 2 のプロジェクトファイルは、そのデータ全てがデータフォークに保存されているので、バイナリーファイルとしてチェックインされるべきで、そのデータ全てがデータフォークに保存されているのでそのようにすると、ファイルを駄目にしてしまう恐れ無しに、ウィンドウズの技術者でもそういったファイルをチェックインしたりチェックアウトしたりできます。

15. PhotoShopでファイルをセーブしようとすると、そのときまでのバージョンの情報が消えてしまうのはなぜか?

Adobe 社のPhotoShopには、保存するファイルのリソースフォークから自分の知らないリソースを除去するという癖があります。これは、MacCVS Proがファイルのバージョンやステータスをトラックするのに使うリソースが、 PhotoShopでファイルを編集する度ごとに消去されてしまうということです。これは PhotoShopのバグですので、我慢がならなければ Adobe社に苦情をいうべきです。 全くとんでもない話ではありますが、チェックインする前にファイルのコピーを取っておいて、コピー用のResEdit あるいはResorcererを使って、 'ckid'、'mcvs'リソース を編集したファイルにペーストして下さい。

MacCVS Pro 2.5 はリビジョンインフォメーションを別々のファイルに保存していますから、この問題は完璧に解消されています。

16. RSH経由でMacCVSProとコンタクトできないのはなぜか?

これは、サーバー上で実行されている Unixのインプリメンテーションにかかっています。"error -3158" のようなエラーは、大抵いつも、サーバーサイドでの誤った許可の設定によるものです。

まず最初にすべき事は、'.rhosts'ファイル が自分のユーザーディレクトリのファイルにあるか、それがちゃんと設定されているかを確認することです。'.rhosts'ファイルが、オーナーにしか読めない場合があります。ですからファイルの許可を確認して下さい。

最後の手段として、 自分のサーバーのmanページをチェックして下さい。情報は大抵 'rsh'あるいは'rshd'の下に並んでいます。もしあなたが自分のリポジトリのためのシステムアドミニストレータがいるのなら、助力を求めて彼らとコンタクトを取りなさい。

17. なぜソースコードはこんな風になっているのか?どんな種類の書式なのか?

MacCVS Proソースは、の単一スペースのフォント(例えば9ポイントのMonaco)と2スペースのタブでフォーマットされています。あなたは自分の用途に応じてIDEのプリファレンスをセットするべきです。 それが、元々の開発者の取っていたスタイルです。どうかこのスタイルを尊重し、必ず同じようなスタイルでチェックインするようにして下さい。

18. 私はソースコードに多少の改良を加えたのだが、それをどこに送ればいいのか?

それをチェックインさせる前に、あなたがアクセスしている範囲内の、できる限り多くのサーバー上でその改良を徹底的にテストしてみて下さい。ここでは、Spotlight のような欠陥を直すためのツールも役立ちます。その、改良されたソースコードがうまく機能することがわかったら、改良された、あるいは新しいファイルのフォルダのかたまりを私たちのcode meister まで送って下さい。

19. ここには載っていないような質問がしたいとき、誰に尋ねれば良いか?

CVSや、サーバーのセットアップ、またはMacintosh特有の問題以外問題に関する一般的な質問でしたら、メインの CVS FAQ をご覧下さい。その後は、CVS メーリングリスト構成管理のニュースグループといったサイトが役に立つかもしれません。

しかしもしあなたの質問が MacCVS Proに特有のものであれば、 maccvs.org フォークにeメールを送って下さい。私たちができる限りのお手伝いをします。

注意: この文章の中で、いくつかの商業ソフトウェアについて触れ、またリンクを掲載してありますが、情報を提供するためにのせてあるだけで、必ずしもMacCVSProが契約を結んでいるわけではありません。

ドキュメントのページに戻る


Last modified: 99/04/12
Simon Fraser