2009-03-19 10 views
1

ソースコントロールに格納されているファイルに対してsvn外部のようなものを持たせる方法はありますか(Subversionは好きですが、他のSCMシステムでは可能であれば簡単です)。テンプレートファイルとソースコントロール

ここに私の言いたいことがあります。 SQLスクリプトをたくさん用意していて、これらのスクリプトを各パッケージをパッケージ化するための大きなスクリプトに統合する必要があるとします。スクリプト全体のファイルを作成し、他のファイルにリンクするだけで、SVNが更新された後にファイルが自動的に更新されるようにすればいいです。連結されたファイルは私が推測するように読み込み専用でなければなりません。

このことについて考えてみると、あまりにも多くのファイルがあると考えている方がおそらく簡単でしょう。 1つはテンプレート定義用、もう1つはファイル自体用です。

これは次のようになります。

テンプレートファイル(多分.sql.svntemplate延長か何か):

<external file="relative/repository/url/Script1.sql"/> 
<external file="relative/repository/url/Script2.sql"/> 
<external file="relative/repository/url/Script3.sql"/> 
<external file="relative/repository/url/Script4.sql"/> 

もちろん、それはXMLである必要はありません。

.sql.svntemplateファイルを追加してコミットすると、Subversionは.svntemplate拡張子を除いて同じ名前の読み取り専用ファイルを自動的に生成します。

など。すべてのスクリプトの内容が含まれているでしょう

DBScripts.sql 

DBScripts.sql.svntemplate 

と呼ばれる読み取り専用のファイルが生成されます。

答えて

3

説明しているものは、一般にDerived Objectとして知られています。多くのソース管理システムでは、さまざまな処理方法があります。最も一般的なケースでは、構築フェーズで新しいラベルを統合する際に派生オブジェクトが作成されます。一般的な他の派生オブジェクトは、コンパイルされたオブジェクトファイル、アーカイブファイル、およびデータベースファイルです。派生オブジェクトを処理するソース管理システムの例は、IBM Rational ClearCaseです。

SVNには、実装された派生オブジェクトの適切な処理がありません。私は、事前コミットのためのmakeファイルを作成することを提案します。したがって、の前にsvn checkinを実行すると、関連する派生オブジェクトをすべて作成/更新する 'make -f Makefile.commit'が実行されます。特定のMakefileを各ディレクトリに入れ、サブディレクトリからmakefileをインクルードすることができます。サブツリーをコミットすると、そのディレクトリにmakefileを実行するだけで、変更したサブツリー全体の永続オブジェクトが更新されます。 makefileにルールを追加して、派生オブジェクトを生成した後に読み取り専用として設定することができます。

メイクファイルの状態については、gnuユーザmanualを参照してください。 Makeは、ソースファイルの変更と依存関係に基づいて派生オブジェクトの作成を処理するために特別に設計されたツールです。

+0

ああ、私はUniからmakeを覚えています。私は今.NETをやっているので、NAntは私が(そして現時点で)使うべきツールだと思います。私は、私のビルドファイルでファイル操作のgooを避けるために、ショートカットを探していました。 –

+0

ショートカットはありません。ソース管理システムは、派生したオブジェクトを生成することはなく、より良い場合にはそれらを管理するだけです。 MakeやAntなどのビルドツールで生成する必要があります。 –

関連する問題