2009-08-19 19 views
32

Powiel możliwe:
How do you remove Subversion control for a folder?
Command line to delete matching files and directories recursivelyUsuwanie plików .svn od wszystkich katalogów

Niedawno konwertowane moje repozytorium CVS do svn przy użyciu cvs2svn i ja niedawno zauważyłem, że każdy katalog ma ukryty folder o nazwie .svn. Mój obecny skrypt budujący kopiuje wiele katalogów z moich katalogów zasobów z wersjami i kończy się kopiowaniem plików .svn. Czy mimo to svn nie dołącza tych plików, gdy ja się wymeldowuję, czy też muszę napisać skrypt, aby usunąć wszystkie te pliki .svn. Istnieje wiele plików, które mają te ukryte katalogi .svn, więc byłoby to trudne, chyba żebym mógł napisać skrypt rekursywny, aby to zrobić, ale nie zrobię tego, jeśli mogę to zrobić dla mojego instalatora Windows. Czy istnieje łatwy sposób, aby powstrzymać svn przed umieszczeniem tego ukrytego katalogu wszędzie w moim projekcie?

+0

Ups wybrał niewłaściwy jeden: http://stackoverflow.com/questions/154853/how-do-you-remove-subversion-control-for-a-folder – zzzzBov

Odpowiedz

28

Można zrobić coś nazywaną SVN Export uzyskać pliki bez katalogów .svn

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.export.html

+0

Tak, SVN Eksport spowoduje usunięcie plików .svn. Można utworzyć plik wsadowy, aby uruchomić polecenie eksportu z wiersza poleceń i włączyć go do procesu kompilacji. –

+0

Sprawdź ten link pomógł mi .... http://cocoabugs.blogspot.com/2010/09/script-to-remove-hidden-svn-folder.html –

+2

to jest świetne, ale niestety czasami ktoś wysyła Ci pełny ich archiwum :( – Eva

4

foldery te są wymagane do jak Subversion współpracuje z kopii roboczej (czyli gdzie zrobiłeś kasy).

Jedną opcją jest wyeksportowanie do innej lokalizacji. Eksport nie miałby folderów .svn i można by na nim uruchomić skrypt. Dokumentacja: svn export,

Inną opcją jest zmodyfikowanie skryptu w celu zignorowania ukrytych katalogów lub zbudowania lepszego narzędzia do kompilacji.

-1

Nie wiem, czy mogę je usunąć, ale może zmodyfikować skrypt budowania, aby zignorować ich kopiowanie byłoby dobrym pomysłem. Używam Anta do kompilowania i budowania mojej wojny i robi to ignorując .svn dirs.

+0

Usuwanie ich nie jest dobrym pomysłem, chyba że chcesz, aby ten folder NIE był kopia robocza już. – crashmstr

5

I posted this yesterday over here, ale tu znów, bo niby umieścić go w złym wątku tak ...


Mam coś, co powinno uczynić swój dzień. Oryginalne źródło to here.

To jest (całkowicie bezpieczne) rozszerzenie powłoki, które doda "Usuń foldery SVN" do menu prawego przycisku myszy w systemie Windows. Uruchom go w dowolnym katalogu zawierającym te brzydkie pliki.

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] 
@="Delete SVN Folders" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\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\" \"" 

Aby ta część skryptu budowy była kopiowana, należy wywołać cmd.exe i wykonać ją.

1

svn export jest to, co chcesz. Da ci czystą kopię drzewa kodu bez katalogów .svn (zwróć uwagę, że ta kopia nie znajduje się pod kontrolą wersji, a polecenia svn nie będą działać po jej wyeksportowaniu).

Używam tej metody do uruchamiania kodu na serwerach produkcyjnych. Nasz skrypt budujący pobiera eksport gałęzi kodu, smyczy i gzipów, ładuje go na właściwy serwer i rozpakowuje/usuwa.

68

Nie jestem pewien w twoim konkretnym przypadku, że chcesz usunąć wszystkie te katalogi .svn.Ale jeśli nie, tutaj jest jeden Bash-liner właśnie do tego:

find . -name .svn -print0 | xargs -0 rm -r 
+2

przed uruchomieniem polecenia należy wprowadzić właściwy katalog, na przykład: cd mySVNdirectoryWhereToRemoveTheSubfolders – Camaleo

0

Można przyjrzeć SVK, która jest warstwą na wierzchu Subversion. Jedną z zalet jest to, że metadane repozytorium dla kopii roboczej, która jest zwykle przechowywana w katalogach .svn, są przechowywane w jednej centralnej lokacji, więc nie masz brzydkiego ukrytego problemu z dir .svn. To całkiem miłe.

3

I wersja PowerShell

ls -Force -Recurse -Filter .svn | rm -Force -Recurse 
+0

Czasami jeden dziedziczy kod, w którym jest on bardziej przydatny. Dzięki! – jray

5

find . -name '.svn' -depth -exec rm -rf '{}' \; -ls

+0

upvote dla użytkowników systemu Windows, którzy mają zainstalowane cygwin. Wciąż znajduję za pomocą pola wyszukiwania Eksploratora plików o wiele łatwiejsze. – Roland

0

Find "/ YourFolder" -name ".svn" -exec rm -fdR {} \;

Sprawdź to link

5

w systemach Win32/Win64, następujące polecenie należy wykonać zadanie:

del /q /s .svn 
Powiązane problemy