私たちのアプリケーションには、複数のアプリケーションで使用されているかなりのコードがあります。コードは SVN 外部を使用して共有されます (共通コードを使用する複数のアプリ - これにアプローチする方法は?の質問を参照してください)。展開を簡素化するために、スタンドアロンの実行可能ファイル (DLL なし) を作成します。
問題は、単純な機能を備えた共通コードの断片だけでなく、他の共通コードに依存する機能を備えたコードの断片も取得していることです。例えば:
- モジュール A には共通機能 A が含まれています
- モジュール B には共通機能 B が含まれています
- モジュール X には共通の機能 X が含まれていますが、A と B が必要です。
多くの場合、別のモジュールを必要とするモジュールだけの問題ではなく、「モジュール A とモジュール B がある場合、それらの機能をリンクするにはモジュール X が必要です」。
共通コードのすべてのモジュールに SVN エクスターナルを使用するため、エクスターナルの大きなセットができあがります。モジュールの多くの組み合わせには、他のモジュールがあります。
- モジュール A と B がある場合は、モジュール X も必要です
- モジュール B と C がある場合は、モジュール Y も必要です。
- モジュール A と C がある場合は、モジュール Z も必要です
- ...
SVN externals はそれを非常に明確にしていますが、それでも使用するのは非常に面倒です:
- 2 つ (またはそれ以上) の他のモジュールに依存する機能を追加する場合、定期的に新しいモジュールを作成する必要があります。
- 新しいモジュールが追加された場合、すべてのアプリケーションの外部を定期的に変更する必要があります
- SVN の更新に時間がかかる
これをより簡単に (またはより速く) するために使用できる良いパターンやテクニックはありますか? 例えば:
- #define と #ifdef を使用して、モジュール A が実際に存在する場合にモジュール A に依存するコードのみを含めます (15 年前にこれを行っていましたが、私はこのアプローチのファンではありません)。
- 再帰的外部 (これは存在しますか?)
- DLLの何か?(これはおそらく問題を悪化させるだけですが)
- ...
他の提案はありますか?