私があなたを理解しているなら、あなたはそれを確認して同じブランチfoo
を共有したいと思っています。はあなたのマスター プロジェクトであり、どこかに を指している があります。ブランチを作成するときは、 が同じブランチを使用していることを確認する必要があります。これを確実にする唯一の方法は、(ほとんどのサイトがそうであるように) プロジェクトのルートではなく、リポジトリのルートにおよびディレクトリを使用してリポジトリを作成することです。bar
foo
svn:externals
bar
foo
bar
tags
branches
次に、相対外部参照を使用して、バックをfoo
含むディレクトリから を指すことができます。また、foo と bar に同じタグを付けると、foo と bar の関係が維持されます。svn:external
bar
$ svn propset svn:externals ../../bar common
ブランチがリポジトリのルートにある場合、common
ディレクトリは の同じブランチを指しfoo
ますbar
。
大きな問題snv:externals
は、注意しないと、リンク先のディレクトリの常に変化するバージョンを指していることです。誰かがこれをしたとしましょう:
$ svn propset svn:externals /projects/bar/trunk common
私のfoo
プロジェクトで。foo
リリースしてタグにコピーします。ただし、common
タグ付けしたディレクトリは、誰かが更新すると変更されますbar/trunk
。これにより、再構築がほぼ不可能になりfoo
ます。
を使用するときはsvn:externals
、 のタグ付きバージョンまたは特定のリビジョンにリンクしていることを常に確認しますbar
。また、特定のリビジョンにリンクしている場合は、誰かがディレクトリを削除することを決定した場合に備えて、URL をそのリビジョンにペグします。私は私のsvn:externals
財産にリンクしています。
プロパティを自動的に更新する Subversion には何もありませんがsvn:externals
、次を使用してディレクトリ ツリー上のすべての svn:externals を検索できます。
$svn propget -v -R svn:externals .
私は、svn:externals
通常、それが価値があるよりも大きな苦痛になることを発見しました.
代わりに、ビルドされたオブジェクトbar
または圧縮されたソースのコピーをリリース リポジトリに保存し、ビルド手順の一部として、オブジェクトまたは圧縮されたソースをリリース リポジトリからコピーします。
Maven プロジェクトを行っていない場合や、Java ベースのプロジェクトで作業している場合でも、Nexus や Artifactory などの Maven サイト リポジトリをリリース リポジトリとして使用しています。ローカルの Maven リポジトリは、依存パッケージをアップロードおよびダウンロードするために必要なすべてのツールを提供します。さらに Maven には、コードが変更されないリリースリポジトリと、コードのリリースを計画しているスナップショットリポジトリの概念がありますが、それは変わる可能性があります。bar
これは、 で必要なもののために変更される可能性があると思われる場合に役立ちますfoo
。