4

Subversionを使用したバージョン管理」の「ベンダーブランチ」セクションでは、「libcomplex」のベンダーブランチを設定し、次のコマンドを使用してlibcomplexをメインの開発ブランチにコピーします。

$ svn copy http://svn.example.com/repos/vendor/libcomplex/1.0  \
           http://svn.example.com/repos/calc/libcomplex        \
           -m "bringing libcomplex-1.0 into the main branch"

ただし、libcomplexの機能のサブセット(したがってファイルのサブセット)のみが必要な場合はどうなりますか?

libcomplexの一部だけをメインブランチにコピーしても大丈夫ですか?または、これは問題を引き起こす可能性がありますか(特にlibcomplexのアップグレードに関して)?

4

3 に答える 3

3

他のソースからインポートされたライブラリを分割することはお勧めしません。

libcomplex が些細なものであれば、依存関係のマージ + アップグレードの悪夢に陥ります。

于 2012-02-16T09:55:36.603 に答える
1

おそらく、これにアプローチする最も簡単な方法は、最初に必要なファイルのみをリポジトリにコミットすることです。これにより、問題の Subversion 側が簡単になります。ベンダーから入手したドロップから必要なライブラリ サブセットを抽出するスクリプトを作成できれば、プロセス全体を自動化できます。抽出を手動で行う必要がある場合でも、これは実行可能ですが、少し面倒です。いずれにせよ、それはメンテナンスの頭痛の種になる可能性が最も高い. 通常、サードパーティのライブラリは分割するように設計されていないため、ライブラリが構造上の変更を行うたびに手動で変更する必要があるリスクがあります。

まったく異なるアプローチは、ライブラリ (またはそのサブセット) をバイナリ ファイルにコンパイルし、そのバイナリ ファイルのみをソース ツリーにコミットすることです。これは、私が取り組んでいるプロジェクトで行うことです。ベンダーからのライブラリ用に別のリポジトリがあります。カスタム makefile がビルドsvn://vendor_repo/trunkおよび生成されsvn://vendor_repo/trunk/libs(新しいドロップごとにコミットされます)、このlibsサブフォルダーを使用してメイン リポジトリにプルしますsvn:externals。この方法では、コードはライブラリがサブセットなのかライブラリ全体なのかを認識 (または気に) しません。彼らが見るのは、リンクするバイナリ ファイルだけです。手動で維持する必要があるコードの範囲は、ベンダー ライブラリを構築するために使用するカスタム メイクファイルです。

于 2012-02-23T00:07:22.660 に答える
0

スパース ディレクトリを使用します。

現時点では、個々のファイルではなくディレクトリの抽出に適していますが、これで問題ないと仮定して、 --depth オプションを使用して、チェックアウトするものの量を制限してください。

于 2012-02-19T13:14:39.207 に答える