新しいブランチが、それらのファイルのコピーではなく、前のブランチのファイルへのポインターを持つ svn ブランチの論理的な進行を作成しようとしています。新しいブランチでファイルを変更すると、古いブランチのコピーから切断されます。(したがって、コピー オン ライト) 実際のファイルはソース コードではなく、テキスト ファイルです。私はここで可能性を探っており、この提案されたレイアウトに関するフィードバックを求めています.
ルート レベルでブランチを使用する典型的なサブバージョン シナリオから始めます。新しいブランチを作成すると、最新のブランチのコピーとして開始されます。たとえば、次のようになります。
^/branches/1/A
^/branches/1/B
ブランチ 1 はメンテナンス モードになりました。新しい開発はブランチ 2 で続行されます。
svn copy ^/branches/1 ^/branches/2
収量
^/branches/2/A (a copy of ^/branches/1/A)
^/branches/2/B (a copy of ^/branches/1/B)
私が望むのは、AとBを切断されたコピーにする代わりに、それらをポインターにすることです
^/branches/2/A -> ^/branches/1/A
^/branches/2/B -> ^/branches/1/B
したがって、ブランチ 2 のファイル A は、ブランチ 1 のファイル A への「変更をシームレスに追跡」します。ブランチ 2 のファイル A がブランチ 1 のファイル A と異なることが必要になった場合、「リンクを解除」し、ファイルを開き、そこから移動します。
私の読書から、これは svn:externals で可能かもしれません。svn コピーの代わりに、ブランチ 1 のディレクトリ構造をブランチ 2 にコピーするスクリプトを作成し、ファイルを含むディレクトリごとに、ディレクトリに svn:externals プロパティを作成し、前のブランチからのファイルへの URL を指定します。
ここに私の質問/問題があります:
ブランチ/2/A の svn:externals コピーからブランチ/1/A を変更できないようにしたい。これは、svn:externals 定義をリビジョンにペグすることによってのみ可能であり、目的全体が無効になると思います。svn:readonly のようなものはありますか? (私が見つけたわけではありません)
svn:externals の定義は再帰的ではありません。つまり、 ^/branches/3/A -> ^/branches/2/A (それ自体が指す) -> ^/branches/1/A は不可能です。3 つのブランチがある場合、3 と 2 の両方が明示的にブランチ 1 を指す必要があります。
私が達成しようとしている主なことは、あるブランチでファイルが作成されると、それ以降のブランチは常にそのファイルに自動的に変更を加えるということです。「そのリンクを壊す」ために、これらのファイルの管理者は明示的なアクションを実行する必要があります。
これを設定するより良い方法はありますか?