プロジェクトをチェックアウトして既存のファイルを更新しようとすると、奇妙な問題が発生します。svn リポジトリにプロジェクトのブランチがいくつかあります。単一の作業プロジェクト ディレクトリ ("proj" など) を使用して、作業したいブランチをチェックアウトします。
「proj」フォルダーにチェックアウトされた「branch1」で作業していたとします。今度は「branch2」で作業したいとします。そこで、「proj」の .svn を削除し、リポジトリから「branch2」を「proj」にチェックアウトします (すべてのファイルを「branch2」、branch2/* に、フォルダー「branch2」を作成せずに「proj」の直下に置きます)。問題は、svn チェックアウトが実際には既存のファイルを更新しないことです。たとえば、「file1」が既に存在する場合 (branch1 と branch2 の両方にある)、削除しない限り、「branch2」のバージョンに更新されません。 「file1」、または「branch2」を空のフォルダーにチェックアウトします。svn update -r #rev file1 を実行しても、実際には file1 は更新されませんが、svn status file1 には file1 の正しい #rev が表示されます。ところで、
これはsvnが振る舞うべきものですか?ファイルを更新できるように、ファイルを削除する必要がありますか? 私はこの動作に不満を持っています。なぜなら、それは直観に反しており、ブランチを切り替えるのに手間がかかるからです。きちんとした解決策を教えてください。ありがとう。