回答:
あなたはしたい--keep-local
コマンドラインオプションを。これにより、ファイルはファイルシステムから削除されずに、バージョン管理から削除されます。
$ svn rm --keep-local my_important_file
注:はコピーのに--keep-local
のみ影響しsvn rm
ます。他のユーザーは、自分が加えた変更によってローカルコピーとリポジトリが競合しない限り、ファイルのローカルコピーを削除することができます。これは望ましい結果ではない可能性があります。以下のコメントを参照してください。
ローカルで削除せずにSVNからファイルを削除することは、一般的な問題です。顕著な例の1つは、Eclipseプロジェクトの.classpathファイルです。プロジェクトで使用されるすべてのマシンに同じEclipseとJavaがインストールされている限り、この構成ファイルをSVNに配置するのはすばらしいです。この条件に違反すると、コミットは他のEclipseプロジェクトを壊し始めます。これは、istをどこにも削除せずにSVNからファイルを削除する必要があるポイントです。
svn rm --keep-local .classpath
1台のマシンでその時点で完全に仕事をします。
問題は、他のマシンがそのファイルを失う(更新時に)か、復活させる(コミット時に)ことです。SVNの欠陥は--keep-local
、リポジトリで処理したり、それを他の作業コピーに伝播したりすることではありません。したがって、他のすべてのマシンでは、コマンドを実行する必要があります。コミットまたは更新の前に実行する必要があります。
もちろん、これはせいぜい90%で機能します。削除と再バージョン管理は突然発生します。私の解決策は、すべてのマシンに直接または間接的にアクセスできるようにすることです。
svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine
これは非常に醜く、「解決策」とはほとんど言えません。それにもかかわらず、それは常にその後の事故の迅速な修理を可能にしました。
この正確な質問への回答はありませんが、ローカルでファイルを削除せずにバージョン管理からディレクトリ内のすべてのファイル(つまり、特定のファイルではない)を削除する方法である関連質問への回答はあります。このソリューションは、Scientific Linuxの実装によるものです。
ls -a .svn
制御データを格納するsvnディレクトリを表示する必要があります。単に:
rm -r .svn
このディレクトリを削除します。次に、次のように入力します。
svn status
バージョン管理下にないため、「警告:このディレクトリは作業コピーではありません」というエラーが発生します。
これがお役に立てば幸いです。