Visual Foxpro データベース (ver 7) を SVN に含めようとした人はいますか? それを含めることの利点/欠点は何でしたか? ソース管理に含める必要がある行がある場合、SCM で VFP Db を処理するための最良の方法は何ですか?
3 に答える
Christof Wollenhaupt は、DBC やその他の Fox ソース ファイルを XML に適切に変換する "TwoFox" というツールを持っています。ただし、DBF ファイルを SVN にドロップすることについて質問している場合は、それらをバイナリ ファイルとしてインポートし、バージョン間で比較/マージする機能を失うか、CURSORTOXML を使用することができます (それは 7 でしたよね?) DBF をチェックインする前に XML に変換します。
私は SVN を使用していませんが、VSS と Vault の両方で VFP を使用しています。これらの両方を使用して、開発環境内で何らかの形式の統合を使用しようとするのではなく、手動でソース管理にファイルを追加します。
これには基本的に 2 つの方法があります。
- .DBC、.DCT、.DCX、および.DBF、.FPT、.CDX のすべてを手動で追加するだけです。
- データベースからスクリプトを作成して構造を作成し (私は修正版の GenDBCX を使用します)、プログラムまたはクラスで保持するデータ レコードの作成をスクリプト化します。
私のセットアップ:
- 以下を実行する仮想マシンとしての Windows XPsp3:
- VFP 8
- TortoiseSVN
- scX を使用して、すべての「オブジェクト ファイル」をフラット テキスト ファイルに変換します。
- 以下を実行する P4 ワークステーション上の Debian:
- Apache2 経由のサブバージョン
- Subversion へのフックを使用して追跡する
- Subversion と Trac データベースの定期的な夜間バックアップ
率直に言って、私たちが持っている数メガバイトのデータベースはチェックインしません。なぜなら、リポジトリだけでサイズが約 20 ギガバイト以上に膨れ上がるからです。私たちは定期的に 1.6Gb のテーブル (およびそれらのメモとインデックス) を持っていますが、20G バイトのテーブル変更で 1 時間以上のコミットを待つのに何時間も費やす価値はありません。代わりに、本番システムからデータを複製し、それを使用して物事を「更新」し、データベース コンテナーを再構築して、テーブルへの新しいリンクを作成します。「更新」プロセスは月に 1 回程度行われ、所要時間は通常 40 分とはるかに短くなります。これは、毎日時間を無駄にすることとは対照的です。
リポジトリにデータをチェックインする必要は一度もありませんでした。スキーマ管理は、当面は単一のルールに従うことで簡素化されました。本番用のすべてのパッチが本番環境にプッシュされた後にのみデータを更新します。これは、両方の環境のスキーマが一貫していることを意味します。今のところ、これで問題ありませんが、将来的には変更する必要があります...
スキーマの変更のみが必要な場合
テーブルに含まれるデータではなく、スキーマをキャプチャしようとしているためにテーブルをチェックインする必要があることがわかった場合は、スキーマをテキスト ファイルに送り出す小さなツールを作成し、それを消化するために台所の流しを出荷する代わりに、レポ。
どうしてもデータをチェックインする必要がある場合
プログラム フローを制御する上で重要なデータ (プログラムによって処理されるデータだけでなく、コードとしてのデータ) がテーブルにある場合は、データを必要最小限にトリミングし、結果のみをチェックインすることを検討してください。スタブ テーブルをレポに手動で追加します。Subversion はバイナリ オブジェクトを処理しますが、これらを最小サイズに保ち、コミットをできるだけ少なくして、レポジトリが行き詰まらないようにする必要があります。すべての *.dbf だけでなく、目的の個々のテーブルを必ずチェックインしてください。そうしないと、作業コピーが存在しないため、他の誰かが数ギガバイトのデータをリポジトリにプッシュしようとしたときに、失礼なショックを受ける可能性があります。すべてのテーブルをマスクします。