LinuxとSVN:KEEPディレクトリ構造以外のすべてのバージョン付きファイルを削除する方法、.svn dirsを無視?


9

リポジトリからバージョン管理されたすべてのファイルを削除したいのですが、バージョン管理されたディレクトリ構造を保持します。明らかに、すべての.svnディレクトリはそのままにしておきたいです。

つまり、ディレクトリ構造自体に害を与えることなく、作業コピーのディレクトリ構造を完全に空にしたいのです。

たとえば、次の構造からファイルを削除します。

dir/
    .svn/
        [files]
    svsubdir1/
        file1
        .svn/
            [files]
    subdir2/
        file2
        file3
        file4
        .svn/
            [files]
        subsubdir1/
            file5
            .svn/
                [files]

結果として:

dir/
    .svn/
        [files]
    svsubdir1/
        .svn/
            [files]
    subdir2/
        .svn/
            [files]
        subsubdir1/
            .svn/
                [files]

findこれを達成するためのコマンドや何かを探していますが、コマンドの作成に問題があります。助けてくれてありがとう!


私がこれをしている理由は、「バージョン」で開発されたWebアプリケーションを持っているが、以前はリビジョン管理されていないためです。今それをSVNリビジョン管理下に置きたいのですが、履歴参照などを簡単にするために、徐々に古いバージョンを含む4つの異なる「バックアップ」フォルダーから4つのバージョンの進行を複製しようとしています。ファイルを削除したら、新しいファイルを階層にコピーして、新しいリビジョンをシミュレートできます。それが理にかなっているかどうかはわかりません。:)
ブライアンレイシー、

1
バージョン1.7(2011年10月)以降のSVNには複数の「.svn」ディレクトリがなくなり、最上位レベルの.svnディレクトリが1つだけになったことに注意してください。subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Rich

回答:


10
find dir/ -path '*/.svn' -prune -o -type f -print

法案に適合する必要があります(主にのfindのマンページに由来します-path)。それを少なくするためにパイプし、チェックアウトします。それが最初に行うこと(パスが.svnで終わり、このディレクトリに再帰しない(削除する))または(ファイルの場合は印刷する)です。

見た目が良ければそれを

find dir/ -path '*/.svn' -prune -o -type f -exec rm {} +

+バージョンは、すべてのファイルを1つのrmコマンドにまとめます。偏執狂の場合は、cp -a dir/ otherdir/最初にツリー()のバックアップをとってください。


完璧なソリューション、それがまさに私が必要とするものです!ダーフ、ありがとう!
ブライアンレイシー、

「-exec rm {} +」の代わりに、より直感的な「-delete」オプションを使用することもできます。
Tim Bielawa、

1
@Tim findマンページによれば、-deletedepth-firstであり-prune、フォルダー自体が検査される前にフォルダー内のファイルがチェックされるため、競合します。使用している他のソリューション(-not -path ...ではなく-path ... -prune-deleteオプションを使用することができます。
DerfK

ナイスキャッチ!
Tim Bielawa

私はこのトリック(または同様の)をさまざまなシナリオで長年にわたって何度も使用しています。@DerfKに感謝します。:)
ブライアンレイシー

2
見つける。-not -path "* /。svn / *" -and -type f -and -exec / bin / rm '{}' \;

トリックをする必要があります。


ヒントにすぎ-exec /bin/rm '{}'ませんが、代わりにを使用できます-delete
アーロンコプリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.