ファイルを削除せずにバージョン管理から削除する方法は?


回答:


277

あなたはしたい--keep-localコマンドラインオプションを。これにより、ファイルはファイルシステムから削除されずに、バージョン管理から削除されます。

$ svn rm --keep-local my_important_file

注:はコピーのに--keep-localのみ影響しsvn rmます。他のユーザーは、自分が加えた変更によってローカルコピーとリポジトリが競合しない限り、ファイルのローカルコピーを削除することができます。これは望ましい結果ではない可能性があります。以下のコメントを参照してください。


4
更新しても他の人のシステムから削除されるのではないでしょうか?
Nyerguds、2015年

1
@Nyerguds正解です。svnrmがリポジトリからファイルを削除しています。リポジトリからファイルを削除したい場合は、ローカルでマシンに保存してから、上記のフラグを使用します。
グレッグヒルストン2016

6
@GregHilston言ったように、それは実際の複数プログラマープロジェクトでは実際には役立ちません。どこでもファイルのバージョンを元に戻す方法があるはずです。ここで最も一般的なケースは、誤ってコミットされたローカル設定ファイルです(Javaプロジェクトでは非常に一般的です)が、それらのバージョン管理を解除しても、他のユーザーの設定ファイルは消去されません。
Nyerguds

5
@GregHilstonの「実際のマルチプログラマプロジェクト」は、「他の人々のシステム」ではかなり暗示されていました。問題はこれです。他の人が更新し、設定を上書きします。これは通常、それほど問題にはなりませんが、解決したいほどに煩わしいものです。しかし、その時点で、設定が既に上書きされており、更新時にsvn "rm"が取得されると、実際にシステムから重要なローカル設定ファイルが削除されますが、バージョンを解除してローカルに設定できるようにする必要があります再び設定。
Nyerguds

4
リポジトリから古いファイルを再ロードすると、そのファイルは古いバージョンのものであるとマークされます。つまり、更新によってファイルが再び削除されるだけです。プロジェクト内のすべてのマシンで手動による介入を必要としない、これを行うためのクリーンな方法はありません。
Nyerguds 2017年

13

ローカルで削除せずに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

これは非常に醜く、「解決策」とはほとんど言えません。それにもかかわらず、それは常にその後の事故の迅速な修理を可能にしました。


-3

この正確な質問への回答はありませんが、ローカルでファイルを削除せずにバージョン管理からディレクトリ内のすべてのファイル(つまり、特定のファイルではない)を削除する方法である関連質問への回答はあります。このソリューションは、Scientific Linuxの実装によるものです。

ls -a .svn

制御データを格納するsvnディレクトリを表示する必要があります。単に:

rm -r .svn

このディレクトリを削除します。次に、次のように入力します。

svn status

バージョン管理下にないため、「警告:このディレクトリは作業コピーではありません」というエラーが発生します。

これがお役に立てば幸いです。


関連する質問?ファイルの削除と作業コピー全体の削除は、私見ではまったく異なります。
Melebius
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.