2011-02-03 15 views
72

Mam katalog z wieloma podkatalogami. W każdym folderze znajduje się folder subversion (.svn).Polecenie do rekurencyjnego usunięcia wszystkich katalogów .svn w systemie Windows

Czy istnieje polecenie w oknach, które przejdą przez każdy folder i podkatalog i usunie folder .svn?

Czy będę musiał utworzyć skrypt lub zrobić to ręcznie?

+4

Jeśli nie może być skryptowany, po prostu wyszukuję ".svn" w folderze głównym, następnie wybiorę wszystkie wyniki i usuń. –

+1

Możesz również być zainteresowany poleceniem eksportu svn (http://svnbook.red-bean.com/en/1.0/re10.html), które kopiuje katalog do innej lokalizacji, ale bez wszystkich katalogów .svn. –

+0

@JB Nizet: Powinieneś utworzyć odpowiedź, aby inni mogli głosować zamiast dodawać komentarze. Komentarze są przeznaczone do komentowania tego pytania, np. Gdy coś jest niejasne –

Odpowiedz

28

Użyj polecenia svn export, aby wyeksportować kopię roboczą Subversion do nowej "czystej" struktury katalogów, która nie ma katalogów .svn.

+4

Może to nie jest to, czego szuka. Chciałem tego samego, więc mogłem sprawdzić jakiś już zmodyfikowany kod w innej lokalizacji SVN. –

+0

możesz to zrobić po 'svn export' –

+0

To działało dla mnie. Użyłem polecenia svn export [RepoPath] [NewPath] – user489041

45

Wykonaj to w PowerShell.

UWAGA: To jest rekurencyjne, więc upewnij się, że jesteś w odpowiednim katalogu!

gci -fil '.svn' -r -force | ri -r -force 

Tutaj jest reszta mojego skryptu oczyszczania drzewa źródłowego.

gci -fil 'bin' -r -force | ri -r -force 
gci -fil 'obj' -r -force | ri -r -force 
gci -fil '_ReSharper*' -r -force | ri -r -force 
gci -fil '*.suo' -r -force | ri -r -force 
gci -fil '*.user' -r -force | ri -r -force 
+0

Uwaga: Jeśli posiadasz ścieżki zawierające więcej niż 260 znaków, otrzymasz wyjątek RemoveItem PathTooLongException. – bluelDe

156

Utwórz plik wsadowy Litte z następującym wierszem i wykonaj go z folderu nadrzędnego, pod którym znajdują się katalogi .svn.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G" 

Można też wystawić linię poniżej prosto z wiersza poleceń:

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G" 
+1

Wielkie dzięki. to właśnie chcę. Z jakiegoś powodu odłączyłem się od repozytorium svn i nie miałem czasu na zrobienie R & D z tego powodu. teraz używam Filezilla do przesłania całego projektu bez żadnego folderu .svn za pomocą tego polecenia. znowu dzięki –

+0

Dzięki za to. Mile widziane. Dostałem drzewo folderów z .svn, ale w rzeczywistości go nie używam. Wyszukiwanie w Win dla .svn (niezależnie od włączania i wyłączania ukrytych plików) zwróciło zero wyników. Polecenie wiersza poleceń wykonało sztuczkę! –

+1

Wszystkie upvotes dla ciebie sir –

9

Jeśli chcesz usunąć wszystkie podfoldery o nazwach .svn w oknach następnie utworzyć plik wsadowy z tej treści :

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i" 
) 

zapisać go w pliku del_All_Dot_SVN_Folders.cmd. Uruchom. Jesteś skończony.

Dzięki http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

Zapamiętaj powyższy kod został .svn natomiast kod w linku dopiero * svn tak jej lepiej mieć .svn nie przypadkowo mieć niepożądany efekt.

8

Po prostu wpisz .svn w polu wyszukiwania Eksploratora plików, następnie wybierz i usuń wszystkie wyniki wyszukiwania (patrz komentarz JB Nizet). Ta metoda może oczywiście być również używana do szybkiego usuwania katalogów obj i bin, np. podczas organizowania archiwów svn.

Mimo że OP poprosił o rozwiązanie linii poleceń, wskazał również na użycie systemu Windows i rozważał ręczne usunięcie, więc metoda Eksplorator plików może być nadal rozważana, szczególnie dlatego, że jest to najszybsza metoda i nie polega na "narzędziach" takich jak eksport svn.

Mimo że OP już wybrał zaakceptowaną odpowiedź, ta odpowiedź może być przydatna dla innych. Przynajmniej to był użyteczne dla mnie, dawno linux/windows użytkownik, który preferuje linii poleceń i pierwszy dowiedział się o polu wyszukiwania przez tego posta :-)

explorer screenshot with searchbox

-1

Jako ważny punkt, jeśli chcesz uruchom powłoka do usunięcia.foldery svn, możesz potrzebować argumentu -depth, aby uniemożliwić polecenie find wchodząc do właśnie usuniętego katalogu i wyświetlając głupie komunikaty o błędach, na przykład

"find: ./.svn: No such file or directory" 

Aby pozbyć się tego błędu, można użyć polecenia find jak:

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

znam jej zbyt późno, aby odpowiedzieć na to pytanie, ale myślę, że jest to łatwy sposób, jeśli mają zaćmienie i plugin svn zainstalowany na twoim zaćmieniu. Kliknij prawym przyciskiem myszy na projekcie, przejdź do Team-> disconnect. Otworzy się okno podręczne, w którym wybierzesz pierwszą opcję: "Usuń również metadane SVN z systemu plików". Spowoduje to automatyczne usunięcie wszystkich folderów SVN wraz z plikami właściwości svn, które możesz czasem zapomnieć, usuwając tylko foldery .svn!

Powiązane problemy