バージョン管理下で移動しようとしている実稼働環境に大きなアプリケーションがあります。そこで、新しいリポジトリを作成してアプリをインポートしましたが、バージョン管理下にあるべきではないさまざまなディレクトリとファイルはありません。次に、インストールしたコピーをチェックアウトする必要があります(ただし、余分なファイルは保持します)。この時点で、SVNの最近のバージョンでは、-forceオプションを使用して、既存のディレクトリの上でチェックアウトを実行するだけです。しかし悲しいことに、私は--forceオプションが追加された前からの古いバージョンのSVNを持っています(そしてまだアップグレードできません...長い話です)。
そこで、アプリを別のディレクトリにチェックアウトし、すべての.svnディレクトリを元のディレクトリにコピーして、余分なファイルを残したまま、元のディレクトリをチェックアウトに変換したいと思います。さて、たぶん私はただ荒れた日を過ごしていて、平凡な場所にある何かを見逃しているかもしれませんが、私はこれを理解することができないようです。これまでに試したアプローチは次のとおりです。
rsyncを使用する:includeディレクティブとexcludeディレクティブの正しい組み合わせをヒットして、すべての.svnディレクトリを再帰的にキャプチャすることはできませんが、他には何もありません。
cpを使用する:アプリ全体ですべての.svnディレクトリにヒットさせる良い方法がわかりません。
find with -exec cpを使用します。見つかったファイルのパス名の先頭部分が宛先パスを台無しにしていて、問題が発生しています。-printf'%P'を使用して除外することはできますが、execの{}置換には含まれないようです。
cpにxargsでfindを使用します。親を送信する前に子ディレクトリを送信するfindで問題が発生しています。残念ながら、findには--breadthオプションがありません。
何か考えはありますか?
他の情報:
- bash 3.0.0.14
- rsync 2.6.3 p28
- cp 5.2.1
- svn 1.3.2