| |||
Original: http://www.tortoisecvs.org/development.shtml
Latest: http://www.tortoisecvs.org/development.shtml 開発のための資料とTIPSオープンソースソフトで作業したことはありませんか? Havoc Pennington's の記事、 Working on Free Software を 読んで、それがどういうものかをつかんでください。 ユーザインターフェースについての変更や、アイディアがある? それをやる前に、Havoc's の記事、 Free software and good user interfaces を読んでください。 SourceForge プロジェクト
TortoiseCVS は面白いプログラムです。 ウィンドウズのプログラムとして、 いくつかの OLE クラスとして実装されたエクスプローラのシェル拡張に なっていますし、オープンソースとしては、wxWindows インターフェースを もち、GPL ライセンスであるような、CVS ツールです。 このため、コンパイルとデバッグには、すこし努力が必要になるかも知れません。 どうか、楽しくやりがいのある範囲でやってみてください。なにかでつまづいたら TortoiseCVS mailing list に助けを求めてください。ヒントがあると思います。 構造: TortoiseCVS はふたつのプログラムからなります。TrtseShl.dll は エクスプローラのシェル拡張DLLです。TortoiseAct.exe が実際に仕事をするプログラム です。TortoiseAct.exe はユーザが実行しようとするコマンドのそれぞれに対して、 シェル拡張DLLによって起動されます。 ソースコードの 依存関係グラフを見るのも 良いかも知れません。 コンパイラ: TortoiseCVS は付属のプロジェクトファイルを使って、Visual C++ 6か Borland C++ Builderでコンパイルすることができます。 Mingw32用のMakefileもあり、多分Cygwinでも動作するはずです。 私は Linux 上で TortoiseAct をクロスコンパイルするのに使ったことが あるだけですが、メモリー確保時に STL クラッシュを引き起こす問題がある ようです。 TortoiseAct.exe はVisual C++ 5でもコンパイルできますが, TrtseShl.dll は、付属のヘッダーファイルにシェルインターフェースが欠けているため、コンパイル することができません。 別のコンパイラによる実行ファイル作成を改良するためのパッチは歓迎です。 従来よりもうまくやる方法を発見した人は charlie にメールしてください。 TrtseShl.dll 中の IColumnProvider をコンパイルするには、 プラットフォームSDKの最新バージョンも必要になります。この中に、Win32 API の ヘッダファイルがあります。これは Microsoft's SDK update siteからダウンロードすることができます。 新しいSDKを利用するように、Tools | Options | Directories | Library と、 Include の部分を変更してください。そうしないと、古くてあやふやな IID_IColumnProvider がリンクされてしまいます。 wxWindows: TortoiseAct をコンパイルするには、GUI ライブラリである、 wxWindowsをダウンロードする必要が あります。これはプラットフォームに依存しないライブラリですが、TortoiseCVS で利用しているのはそれが理由ではありません。生の Win32 あるいは MFC の ライブラリを呼び出すより、ずっとやさしくコーディングできるからです。 Tools|Options|Directories のページで、wxWindows のライブラリとヘッダファイル を大域的に設定するのか一番良い方法です。 ライブラリを作るには、wxWindows のソースコードをコンパイルする必要が ありますが、これは簡単です。 Visual C++ で wxWindows をコンパイルするには、以下の変数を設定してあること を確認してください。 wxUSE_DEBUG_NEW_ALWAYS を 0 に
そうしないと wxWindows はテンプレートと互換性がなくなり、Visual C++ がすでに もっているメモリデバッグ機能を付け加えることになってしまいます。これらの値を 設定するには、wxWindows インストール手順に書いてある設定ファイルを編集してください。 私は wxWindows の CVS 用のバージョンを使っていますが、それ以前のリリース では修正されていないいくつかのバグが修正されているからです。古いバージンでも TortoiseCVS はコンパイルできますが、私が作ったものほど良くないかも知れません。 もちろん、ほかの方法でも動かすことができます。CVS のバージョンにはもっとバグが あるかも知れません。 Flex/Bison: flex と bison を使った構文解析のコードが cvstree フォルダに いくつかあります。TortoiseCVS をコンパイルしインストールするのにこれらのプログラム は不要です。CVS リポジトリには、すでに生成結果の parser.cpp と lexer.cpp が含まれて いるからてす。しかし、Rebuild All する場合には、同じディレクトにある cygwin の flex と bison のバイナリが必要になります。Visual C++ はこの二つを使って再構築 するからです。 "shared region is corrupted" とか "shared region version mismatch" とかいうエラーが出る場合 cygwin バイナリと、すでにインストールされているものとが 衝突していることによって起こります。 こういうことが起こらないことを願っています。 もしおきてしまったら私たちに emailして ください。また ここを読んでみてください。 TortoiseAct の引数: TortoiseAct.exe はいくつかの引数をとります。 デバッガから起動するときには、これを使うことができます。 最初の引数は、実行内容を示す動詞で、たとえば、CVSCheckOut, CVSDiff などです。 残りの引数は、その処理の対象となるファイル名称です。あるいは、-f オプションを 使ってファイルで指定することもできます。そのファイルの内容は、処理対象のファイルの リストで、一行にひとつのファイルを書きます。ウィンドウハンドルを、-h オプションで 渡すこともできます。これは変更後のエクスプローラビューを再描画するために使われ たり、プロパティーダイアログの更新に使われたりします。 DLLの実行: シェル拡張DLLを実行するのは簡単ではありません。
できるだけ、すべてのデバッグをTortoiseAct.exe の中でやるようにしてください。
TrtseShl.dll を変更する場合、それを直接 TortoiseCVS がインストールされている
場所にリンクしたいと思いまが、残念なことに、エクスプローラがすでにロードされて
いる場合、その DLL を上書きすることはできません。これについて、いくつかの
方法があります。
ショートカットキーに関するコツ: Windows NT/2000/XP では、 Shift+Ctrl+Escape を押せばタスクマネージャを直接起動できます。 そのあとキーボードだけを使ってでエクスプローラを選択し、終了することができます。 DLL のデバッグ: DLL をデバッグするには、いま書いたどれかの方法で 実行中のエクスプローラを完全に終了することが必要です。 エクスプローラが走っていな状態で Visual Studio から直接エクスプローラを起動 してください。それには: Project|Settings|Debug メニューでデバッグセッションでの実行ファイルに explorer.exe を選んでください。するとデバッグセッションが始まり エクスプローラが起動し、DLL はデバッガにロードされます。あとは通常どおり ブレークポイントを設定しデバッグしてください。
Visual C++ での別のトリックは、デバッグをはじめたいと思う行の近くに、ASSERT(false)
の分を追加することです。 ダイアログがポップアップしたら再実行を押して、キャンセル
を押します。これでデバッガーがアタッチします。もしうまくいかない場合は、再実行を
押す前に、デバッガをそのプロセスに明示的にアタッチしてみてください。
Localisation: TortoiseCVS は GNU の gettext マーカを使ってどの部分に 翻訳が必要かを示しています。文字列定数をソースコードに追加するときはいつでも 以下のどれかの方法でマークしてください。
やるべきこと: やるべきことはたくさんあります。
プログラムのおかしな場所を見つけるのに、ソースコード中のTODOを検索するか、
SourceForge プロジェクトサイト上の
Bugs & Feature trackers を読んでください。
コーディングスタイルの問題: TortoiseCVS のコードは、さまざまな貢献者に由来しているので、コーディングスタイルは違っているも知れません。以下は、私(Torsten)が勧めようとしている約束ですが:
| |||
メーリングリスト: TortoiseCVS Email: charlie@tortoisecvs.org |