私はSVN(JavaverseのApache MavenまたはIvyを考えてください)の外で依存関係管理を解決しようとします。
SVNでなければならない場合は、特別なタグ名はどうですか?したがって、ビルドシステムがProject1のRel-1.0ビルドに必要なコードのために、/Module1/branches/deps/Project1/Rel-1.0
のような、依存するバージョンの特別なフォルダ内をビルドシステムが検索するという概念を導入することができます。
/Project1/branches
/tags/Rel-1.0
/trunk
/Module1/branches
/tags/Rel-1.0
...
/tags/Rel-2.0
/deps/Project1/Rel-1.0
/deps/Project1/Rel-1.1
/trunk
/Module2/branches
/tags/Rel-1.0
...
/tags/Rel-2.1
/deps/Project1/Rel-1.0
/deps/Project1/Rel-1.1
/trunk
あなたはタグのフォルダに参照することにより、扶養家族のためのフォルダを作成することができます。
それ以降のバージョンを切り替える
# dependencies to Module1
svn cp http://myServer/svn/Module1/branches/tags/Rel-1.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.0
svn cp http://myServer/svn/Module1/branches/tags/Rel-2.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1
# dependencies to Module2
svn cp http://myServer/svn/Module2/branches/tags/Rel-1.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.0
svn cp http://myServer/svn/Module2/branches/tags/Rel-2.0 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1
が
# delete old reference
svn rm http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1
# make other one for new version
svn cp http://myServer/svn/Module1/branches/tags/Rel-2.1 http://myServer/svn/Module1/branches/deps/Project1/Rel-1.1
ようになり、このアプローチの欠点は、より多くのスペースかもしれませんSVN作業ディレクトリの要件。
私のプロジェクトはC++です。一部のコンポーネントはサードパーティのライブラリでもあります。 私の第一の目的は、リポジトリに最適なプロジェクトと図書館の組織を見つけることです。 私の2番目の目標は、SVNの下で私が簡単にアプリケーションをどのように構成されているアプリケーション(どのモジュールが埋め込まれているか)を自動的に知り、管理できるかどうかを確認することです。 – Manu13
このアプローチの問題は、 。 Repoや作業コピーからメタデータを読み込み、適切なものを適切に構築する独自のビルドプロセス(make、cmakeなど)を作成する必要があります。 少なくとも、XMLを使って読み込みを行うことができます(コマンドラインで 'svn ls --xml http:// server/repo/path/to/list'のように)。 もう1つのアプローチは、現在の依存関係が記述されているプロジェクトまたはモジュールのパスにファイルを配置することです。それはビルドツールで読み取って実行することができます。 – chabicht
私は明らかな解決策を完全に忘れていました。makeのようなビルドツールを使用している場合は、すでにバージョン管理下にファイルがあります。依存関係の説明を置くことができます:_the makefile _...:o) – chabicht