フォルダーのSubversionコントロールを削除するにはどうすればよいですか?


259

私は、フォルダを持っているc:\websites\test、そしてそれはもはやが存在しないことをリポジトリからチェックアウトされたフォルダやファイルが含まれています。Subversionがそのフォルダーとサブフォルダーとファイルの追跡を停止するようにするにはどうすればよいですか?

単純に.svnフォルダを削除できることはわかっていますが、多くのレイヤに多数のサブフォルダがあります。


1
TortioseSVNを使用している場合は、これを行う最速の方法を示すブログ投稿を書きました。私の投稿には、写真付きの段階的な説明があります。その投稿はhttp://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell

多くを助けてきた私の答えを参照してください。stackoverflow.com/questions/4889619/...
アジットVaze

回答:


258

また、TortoiseSVNを使用している場合は、現在の作業コピーの場所にエクスポートするだけで、.svnフォルダーとファイルが削除されます。

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Subversion 1.7の更新された回答:
Subversion 1.7では、作業コピーが大幅に改訂されました。作業コピーのベースにある.svnフォルダーは1つだけです。1.7を使用している場合は、.svnフォルダーとその内容を削除するだけで簡単に解決できます(TortoiseSVNまたはコマンドラインツールの使用に関係なく)。


8
リンクは404になりました。新しいリンク:tortoisesvn.net/docs/release/TortoiseSVN_en/…バージョン管理されていないファイルも保持するように言った場合、export-over-currentは.svnファイルのみを削除する特別なケースのようです。
lilbyrdie、2011

通常の削除でフォルダーアイコンを元に戻すための削除に成功した後、svnサーバーを再起動します。これですべてです
3ehrang

サーバーはTortoiseフォルダーアイコンとは何の関係もありません。ただし、更新されない場合は、TSVNCacheプロセスを強制終了してみてください。自動的に再起動します。
crashmstr

1
私の場合、.svnフォルダーと一緒にgitフォルダーも削除しました
Aftab Ahmed Kalhoro 2018

155

Linuxでは、これは動作します:

  find . -iname ".svn" -print0 | xargs -0 rm -r

10
Mac OSでも動作します。
エミッシュ

2
コマンドを実行する前に、適切なディレクトリを入力してください。例:cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo

私はrmを取得します:オペランドがありません
Winter

119

svn exportを試してください。

次のようなことができるはずです。

svn export /path/to/old/working/copy /path/to/plain/code

次に、古い作業コピーを削除します。

TortoiseSVNにはエクスポート機能もあり、同じように動作します。


4
コマンドラインで動作する答えを提供してくれてありがとう。:)端末を使用している私たちに最適です。
エポックウルフ、2009

16
私が正しく理解している場合、このコマンドは現在subversionの制御下にあるファイルのみをエクスポートします。したがって、一部のファイルまたはフォルダーがまだSubversionに追加されていないか、Subversionコントロールから削除されている場合、エクスポートでこれらのファイルが失われます...
Chris

@クリス、はい、あなたは正しいです。これにより、バージョン管理されたファイルのみがエクスポートされます。これは、コードをエクスポートしたり、派生アーティファクトを残したりするのに適していますが、すべてのジョブに適したツールとは限りません。
2011

4
これは、SVNサーバーがなくなっても動作するというコメントに値します。VisualSVNまたはTortoise SVNを使用してエクスポートしようとすると、サーバーに接続しようとするように見えますが、上記のコマンドラインバージョンは、SVNサーバーがまだ実行されていなくても機能しました。
Dave

エラーが表示されます:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky

32

Windowsを実行している場合は、そのフォルダで検索を実行する.svnと、それらすべてが一覧表示されます。Ctrl+ Aを押すとそれらすべてが選択され、deleteを押すと「厄介な」Subversionのものがすべて削除されます。


確かに厄介です;-)私はそれをクリーンアップする必要があるだけで、新しいリポジトリに戻します。
ブライアンボートライト

2
これは、最も厄介なフロントページ拡張フォルダーを削除するための素晴らしい方法でもあります。
ブライアンボートライト

Everything Searchユーティリティをダウンロードして使用し、.svnフォルダーを高速で検索および削除します:) voidtools.com Windowsのみ!
endo64 2013

23

Linuxでは、コマンドは次のとおりです。

svn delete --keep-local file_name

21

一時的な場所にコピーする必要すらないこともわかりました。あなたはできる

svn export --force .

.svnファイルはその場で削除さ、他のファイルはそのまま残ります。非常に便利で、乱雑になりがちです。


4
何なのかわかりませんが、どういうわけかうまくいきませんでした。
Aries VII

1
このコマンドは作業コピーに対してのみ機能し、その中のフォルダーには機能しません。たぶん同じの変形...?

2
インストールされているSubversionのバージョンが1.7で、リポジトリが1.6の場合、これは機能しません。ただし、「svn upgrade」はエクスポートの前に実行でき、機能します。
Peter Mortensen 2013年

11

Linuxに.svnフォルダーを削除するサブシェルがない場合:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".

8

これらの答えはどれも私の状況に満足できませんでした。私はsubversion 1.8を使用してい.svnますが、最初のフォルダーであるルートにフォルダーが1つしかない作業用コピーがありました。しかし、私はいくつかのブランチを作業コピーから削除したかったのです。

私が何をしたかに関係なく、「更新」を実行すると、それらのファイルが復元されてすべて元に戻ります。私は自分のコンピューターからだけで、リポジトリからそれらを削除したくありませんでしたが、残りの作業用コピーをそのままにしておく必要がありました(したがって、.svnフォルダーを削除することはできませんでした)。

解決? svn update --set-depth exclude <dir>

これは、特定のディレクトリを除外するクライアント側の「更新」です。svnbook.comのマニュアルにあります。つまり、これは次のように説明されています。

Subversion 1.6から、別のアプローチをとることができます。まず、ディレクトリ全体をチェックアウトします。次に、気にしない1つのサブディレクトリでsvn update --set-depth excludeを実行します。

TortoiseSVNの場合は、次のスクリーンショットに示すUpdate to revision...ようにExclude、不要なフォルダーを右クリックしてをクリックし、[ 深さの更新]をに設定して、同じことを行うこともできます。

ここに画像の説明を入力してください


ただし、作業コピーのルートフォルダーは削除できません。
JaBe

8

それは私にとってうまくいきました:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

これは非常に単純なソリューションですが、魅力のように機能します。
IgorGanapolsky 2016

@IgorGanapolsky嬉しいです。私の解決策はあなたを助けます。
Manikandan S

限り、誰もが実行していないようmkdir -p ';echo Hi Johnny;/.svn'-その場合には検索の{}の呼び出しはまだかかわらず動作するはずです
決してスリープアゲイン

7

次のsvn exportコマンドを使用します。

cd c:\websites\test
svn export c:\websites\test_copy

バージョン管理下にあるすべてのファイルがエクスポートされます。見落としがないことを再確認してください。


4

必要なフォルダー内の.svnフォルダーを削除するだけで、コントロールが自動的に削除されます。


3

Windowsでは、そのためのクイックリンクをエクスプローラの右クリックメニューに追加できます。このレジストリスクリプトを開始するだけです。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

これにより、「SVNフォルダーの削除」というアイテムが右クリックメニューに追加されます。これにより、このフォルダー内のすべての.svnフォルダーとすべてのサブフォルダーが削除されます。

出典(ドイツ語):http : //www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/


2

「svn export」を使用して、svnデータなしでそのフォルダーのコピーを作成するか、そのフォルダーを追加してリストを無視することができます


2

SVNでNetBeansを使用している場合は、「Subversion>エクスポート」オプションがあります。


2

また、Windowsエクスプローラーのコンテキストメニューに3つのオプションを追加する、SVN Cleanerと呼ばれる素晴らしい小さなオープンソースツールもあります。

  • すべての.svnを削除
  • ルート以外のすべてを削除します。
  • ローカルリポジトリファイルを削除する

2

Windows 7では、隠しファイルが有効になっている場合、プロジェクトフォルダーを開いて「.svn」を検索し、見つかったすべての.svnフォルダーを削除できます。


1
Win Win XPも同様に機能します。SVN 1.7では、.svnディレクトリが分散して存在しないことに注意してください。詳細については、subversion.apache.org
docs /


1

答えは驚くほど簡単です- フォルダをそれ自体にエクスポートしてください!TortoiseSVNはこの特殊なケースを検出し、作業コピーをバージョン管理外にするかどうかを尋ねます。はいと答えると、コントロールディレクトリが削除され、バージョン管理されていないプレーンなディレクトリツリーが作成されます。


1
これは、5年前に与えられた承認済みの回答を再引用するだけではないですか
Ben Thurley、2013年

1

別の(より単純な)Linuxソリューション:

rm -r `find /path/to/foo -name .svn`

1

最善かつ最も簡単な方法

簡単な魔法のコマンドで勝てると思ったら失敗です!SVNは本当にトリッキーで、常に何らかの理由でXcodeの新しいエラーメッセージが表示されます。遅かれ早かれ、約束してください...あなたはそれを賢くしなければなりません!

ご存じのとおり、Xcodeでの通常のベストプラクティスは、左側のプロジェクトペインでファイルを削除することです。あなたがそれを見逃して、どういうわけかFinderでそれを削除した場合、あなたは困っています。大きな問題!しかし、うまくやれば、それを解決して時間を空けることができます。

まず、実際に削除する前に、ファイルまたはフォルダへのSVN参照を削除する必要があります

  1. ゴミ箱からファイル/フォルダを元に戻すか、削除したときに最後の手順を元に戻すことができる場合、...

  2. ターミナルに行きます-はい、古き良きターミナル-そしてその場所に行きます。最善の方法は、単にcdと入力して、フォルダー/ファイルをターミナルにプルすることです。あなたは似たようなものを手に入れます

cd / Users / UserName / Documents / Apps_Developing / ...

あなたはどこにいるのかチェックできます

ls

ファイルを一覧表示するコマンド。

  1. 次に、SVNコマンドでsvn参照を削除する必要があります。

    svn delete --keep-local fileName_toDelete

これにより、SVNリポジトリからファイルが削除されますが、Finderで手動で削除する必要があります。


0

私はrsyncを使用します:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

0

NetBeans IDEユーザーは、次のように実行できます。

  1. IDEでSVNプロジェクトを開きます
  2. プロジェクトを選択

    Subversionエクスポートを右クリック

  3. ダイアログボックスで

    フォルダー/ var / tmp / projectnameにエクスポートを押します。エクスポートの待機が完了すると、完了を表示します。開くかどうかをその場で開きますか。

  4. これでGitに切り替えることができます:)


0

私の考えは、.svnフォルダーを削除してから、他のすべてのファイルを新しいフォルダーに移動することです。それはそれと同じくらい簡単です。


0

Windows OSを使用している場合は、フォルダーの場所に移動し、隠しファイルが開いていることを確認すると、そこにSVNフォルダーが表示されます。そのフォルダを削除するだけです。


0

svn export 正常に動作しますが、これは次のとおりです。

svn rm --keep-local <folder/file>

ローカルリポジトリから削除します。


0

重要な点として、シェルを使用して.svnフォルダーを削除するときは、-depth引数が必要です。これにより、findコマンドが削除されたばかりのディレクトリに入り、たとえば次のようなエラーメッセージが表示されないようにします。

「検索:./.svn:そのようなファイルやディレクトリはありません」

その結果、find次のようなコマンドを使用できます。

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;


0

以下を使用します。

svn rm --keep-local <folder name> フォルダとその中のすべてを削除します。

svn rm --keep-local <folder name>/* フォルダを保持しますが、フォルダ内のすべてを削除します。

これが何が起こるかの例です:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json

-1

Windows 10では、に移動してからWindows ExplorerViewのチェックボックスに移動してチェックする必要がありますView hidden files

次に、WindowsエクスプローラでSVNがリンクされているフォルダに移動し、.svnフォルダ/ファイルを削除します。


書式を編集しましたが、この答えは実際には質問に答えるものではありません。ユーザーはベース.svnフォルダーを削除する方法を既に知っていますが、すべてのサブフォルダーについて質問しています。質問をよく読んで
CodeMouse92
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.