Jak usunąć kontrolę Subversion dla folderu?

259

Mam folder, c:\websites\testktóry zawiera foldery i pliki pobrane z repozytorium, które już nie istnieje. Jak sprawić, by Subversion przestał śledzić ten folder oraz którykolwiek z podfolderów i plików?

Wiem, że mógłbym po prostu usunąć .svnfolder, ale jest wiele podfolderów na wielu warstwach.

Brian Boatright
źródło
1
Jeśli używasz TortioseSVN, napisałem post na blogu, który pokazuje najszybszy sposób na zrobienie tego. Mój post zawiera instrukcje krok po kroku ze zdjęciami. Ten post jest dostępny pod adresem http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell
Zobacz moją odpowiedź, która pomogła wielu osobom. stackoverflow.com/questions/4889619/…
Ajit Vaze

Odpowiedzi:

258

Ponadto, jeśli używasz TortoiseSVN, po prostu wyeksportuj do bieżącej lokalizacji kopii roboczej, aby usunąć foldery i pliki .svn.

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

Zaktualizowana odpowiedź dla Subversion 1.7:
W Subversion 1.7 kopia robocza została gruntownie zmieniona. Istnieje tylko jeden folder .svn, znajdujący się w podstawie kopii roboczej. Jeśli używasz 1.7, to po prostu usunięcie folderu .svn i jego zawartości jest łatwym rozwiązaniem (niezależnie od użycia TortoiseSVN lub narzędzi wiersza poleceń).

crashmstr
źródło
8
Link jest teraz 404. Nowy link: tortoisesvn.net/docs/release/TortoiseSVN_pl/ ... Eksport nadprądowy wydaje się być tylko specjalnym przypadkiem, który usuwa tylko pliki .svn, jeśli chcesz zachować również niewersjonowane pliki.
lilbyrdie
po udanym usunięciu w celu przywrócenia ikony folderu w normalnym trybie uruchom ponownie serwer
SVN
Serwer nie miałby nic wspólnego z ikonami folderów Tortoise. Ale jeśli się nie zaktualizują, możesz spróbować zabić proces TSVNCache. Powinien zostać zrestartowany automatycznie.
crashmstr
1
W moim przypadku usunąłem folder git również razem z folderem .svn
Aftab Ahmed Kalhoro
155

W systemie Linux będzie to działać:

  find . -iname ".svn" -print0 | xargs -0 rm -r
Max Cantor
źródło
10
Działa również w systemie Mac OS.
emish
2
przed uruchomieniem polecenia należy wprowadzić właściwy katalog, na przykład: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo
Dostaję rm: brakujący operand
Winter
119

Spróbuj wyeksportować svn .

Powinieneś być w stanie zrobić coś takiego:

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

A następnie po prostu usuń starą kopię roboczą.

TortoiseSVN ma również funkcję eksportu , która zachowuje się w ten sam sposób.

pkaeding
źródło
4
Dziękujemy za udzielenie odpowiedzi, która działa z wierszem poleceń. :) Idealne dla tych z nas korzystających z terminali.
epochwolf
16
Jeśli dobrze rozumiem, to polecenie wyeksportuje tylko pliki aktualnie kontrolowane przez subversion. Więc jeśli niektóre pliki lub foldery nie zostały jeszcze dodane do subversion lub zostały usunięte z kontroli subversion, utracisz te pliki podczas eksportu ...
Chris
@Chris, tak, masz rację. Spowoduje to jedynie eksport plików w wersji. Jest to przydatne do eksportowania kodu i pozostawiania pochodnych artefaktów itp., Ale może nie być odpowiednim narzędziem dla każdego zadania.
pkaeding
4
Warto skomentować, że to nadal działa, jeśli serwer SVN już dawno zniknął; jeśli spróbujesz wyeksportować za pomocą VisualSVN lub Tortoise SVN, zachęca to do skontaktowania się z serwerem, ale powyższa wersja wiersza poleceń działała dla mnie bez serwera SVN nadal działającego.
Dave
svn: E000002: Can't stat '/.classpath': No such file or directory
Pojawia
32

Jeśli korzystasz z systemu Windows, możesz wyszukać w tym folderze .svni wyświetli je wszystkie. Naciśnięcie Ctrl+ Aspowoduje zaznaczenie ich wszystkich, a naciśnięcie klawisza Delete usunie wszystkie „nieznośne” Subversion.

graham.reeds
źródło
wkurzające ;-) Muszę to posprzątać i wrócę do nowego repozytorium.
Brian Boatright
2
to także WIELKI sposób na usunięcie nawet najbardziej irytujących folderów rozszerzeń strony głównej!
Brian Boatright
Pobierz i użyj narzędzia Everything Search, aby szybko znaleźć i usunąć foldery .svn :) voidtools.com Tylko system Windows!
endo64
23

W systemie Linux polecenie to:

svn delete --keep-local file_name
bunteKnete
źródło
21

Odkryłem, że nie musisz nawet kopiować do tymczasowej lokalizacji. Możesz zrobić

svn export --force .

a pliki .svn zostaną usunięte na miejscu , pozostawiając pozostałe pliki bez zmian . Bardzo wygodny i mniej podatny na bałagan.

IJ Kennedy
źródło
4
Nie wiem co to jest, ale z jakiegoś powodu nie zadziałało.
Baran VII
1
To polecenie działa tylko dla kopii roboczej, a nie dla folderu wewnątrz niej. Może wariant tego samego ...?
2
To nie zadziała, jeśli zainstalowana wersja Subversion to 1.7, a repozytorium jest dla 1.6. Jednak „svn upgrade” można uruchomić przed eksportem i będzie działać.
Peter Mortensen
11

Bez podpowłoki w systemie Linux do usuwania .svnfolderów:

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".
użytkownik1439712
źródło
8

Żadna z tych odpowiedzi nie była zadowalająca w mojej sytuacji. Jestem na subversion 1.8 i miałem kopię roboczą, która miała tylko jeden .svnfolder w pierwszym folderze, root. Chciałem jednak usunąć niektóre gałęzie z kopii roboczej.

Niezależnie od tego, co zrobiłem, za każdym razem, gdy przeprowadzałem „aktualizację”, przywracało te pliki i przywracało je wszystkie. Nie chciałem ich usuwać z repozytorium, tylko z mojego komputera - ale musiałem zachować resztę kopii roboczej w takt (tak więc nie mogłem po prostu usunąć folderu .svn).

Rozwiązanie? svn update --set-depth exclude <dir>

Jest to „aktualizacja” po stronie klienta, która wyklucza określony katalog. Można go znaleźć w instrukcjach na svnbook.com . W skrócie opisuje to jako:

Począwszy od Subversion 1.6, możesz przyjąć inne podejście. Najpierw sprawdź katalog w całości. Następnie uruchom svn update - ustaw głębokość wykluczenia w jednym podkatalogu, na którym ci nie zależy.

W przypadku TortoiseSVN możesz również zrobić to samo, klikając prawym przyciskiem myszy folder, którego nie chcesz, kliknij Update to revision..., a następnie ustaw „Głębokość aktualizacji” na Exclude, jak pokazano na tym zrzucie ekranu:

wprowadź opis zdjęcia tutaj

brazilianldsjaguar
źródło
Nie można jednak usunąć folderów głównych kopii roboczych.
JaBe
8

Działa dobrze dla mnie:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
Manikandan S.
źródło
To takie proste rozwiązanie, ale działa jak urok.
IgorGanapolsky
@IgorGanapolsky Cieszę się. Moje rozwiązanie jest ci pomocne.
Manikandan S
dopóki nikt nie uruchomi mkdir -p ';echo Hi Johnny;/.svn'- w takim przypadku wywołanie funkcji {} find powinno nadal działać
Never Sleep Again
7

Użyj svn exportpolecenia:

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

Wszystkie pliki pod kontrolą wersji zostaną wyeksportowane. Sprawdź dwukrotnie, aby upewnić się, że niczego nie przeoczyłeś.

1800 INFORMACJI
źródło
4

Wystarczy usunąć folder .svn w wymaganym folderze, a następnie formant zostanie automatycznie usunięty.

Ramudu
źródło
3

W systemie Windows możesz dodać szybki link do tego menu Eksploratora, klikając prawym przyciskiem myszy. Po prostu uruchom ten skrypt rejestru:

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\" \""

Spowoduje to dodanie elementu o nazwie „Usuń foldery SVN” do menu po kliknięciu prawym przyciskiem myszy. Spowoduje to usunięcie wszystkich folderów .svn w tym folderze i wszystkich podfolderów.

Źródło (niemiecki): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/

Tobiasz
źródło
2

Możesz użyć „eksportu svn” do utworzenia kopii tego folderu bez danych svn lub możesz dodać ten folder do listy ignorowanych

andy.gurin
źródło
2

Dla użytkowników NetBeans z SVN dostępna jest opcja „Subversion> Eksport”.

Ladik
źródło
2

Jest też ładne małe narzędzie open source o nazwie SVN Cleaner, które dodaje trzy opcje do menu kontekstowego Eksploratora Windows:

  • Usuń wszystkie .svn
  • Usuń wszystko oprócz root .svn
  • Usuń lokalne pliki repozytoriów
Martin Buberl
źródło
2

W systemie Windows 7 można po prostu otworzyć folder projektu i wyszukać „.svn”, jeśli włączone są ukryte pliki, i usunąć wszystkie znalezione foldery .svn.

Unknown_Guy
źródło
1
Win Win XP, który również działa świetnie. Zauważ, że w SVN 1.7 .svnkatalogi już nie istnieją, są rozproszone. Aby uzyskać więcej informacji, sprawdź subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho
1

Odpowiedź jest zaskakująco prosta - wyeksportuj folder do siebie ! TortoiseSVN wykrywa ten szczególny przypadek i pyta, czy chcesz, aby kopia robocza została wypakowana. Jeśli odpowiesz tak, katalogi kontrolne zostaną usunięte i będziesz miał proste, niewersjonowane drzewo katalogów.

Srikanth
źródło
1
Czy to nie jest ponowne cytowanie zaakceptowanej odpowiedzi udzielonej 5 lat temu?
Ben Thurley
1

Inne (prostsze) rozwiązanie dla systemu Linux:

rm -r `find /path/to/foo -name .svn`
Dougvj
źródło
1

NAJLEPSZY I ŁATWY SPOSÓB

Jeśli uważasz, że możesz wygrać za pomocą prostej magicznej komendy, nie powiodło się! SVN jest naprawdę trudny i zawsze w jakiś sposób wraca z nowym komunikatem o błędzie w Xcode. Wcześniej czy później, obiecaj ... więc musisz to zrobić mądrze!

Jak wiesz, regularną i najlepszą praktyką w Xcode jest usuwanie pliku w okienku projektu po lewej stronie. Jeśli go przegapiłeś i jakoś usunąłeś w Finderze, masz kłopoty. Duży problem! Ale możesz to rozwiązać i zaoszczędzić czas, jeśli zrobisz to dobrze.

Najpierw musisz usunąć odniesienie SVN do pliku lub folderu, zanim będziesz mógł je usunąć

  1. Jeśli możesz po prostu odłożyć plik / folder z kosza lub cofnąć ostatni krok po jego usunięciu, to ...

  2. Idź do terminalu - tak, stary dobry terminal - i idź do tej lokalizacji. Najlepszym sposobem jest po prostu wpisz cd, a następnie przeciągnij folder / plik do terminala. Dostaniesz coś podobnego

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

Możesz sprawdzić, gdzie jesteś

ls

polecenie, które wyświetla listę twoich plików.

  1. Następnie musisz usunąć odwołanie svn za pomocą polecenia SVN:

    svn delete --keep-local fileName_toDelete

Spowoduje to usunięcie pliku z repozytorium SVN, ALE musisz go usunąć ręcznie w Finderze.

Szewc
źródło
0

Używam rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
yeeking
źródło
0

Użytkownicy NetBeans IDE mogą to zrobić w następujący sposób:

  1. Otwórz projekt SVN w swoim IDE
  2. Wybierz projekt

    kliknij prawym przyciskiem myszy Subversion Export

  3. W oknie dialogowym

    eksport do folderu / var / tmp / nazwa projektu naciśnij eksport poczekaj pokaże zakończony zapyta czy chcesz go otworzyć czy otwórz w locie

  4. Możesz teraz przejść na Git :)

Peter Mortensen
źródło
0

Moim pomysłem jest usunięcie folderu .svn, a następnie przeniesienie wszystkich innych plików do nowego folderu. To takie proste.

Alvin567
źródło
0

Podczas korzystania z systemu operacyjnego Windows przejdź do lokalizacji folderu i sprawdź, czy ukryte pliki są otwarte, a następnie możesz zobaczyć folder SVN . Po prostu usuń ten folder.

dush88c
źródło
0

svn export działa dobrze, ale myślę, że to jest:

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

Usuwa go z lokalnego repozytorium.

Javier Salinas
źródło
0

Jako istotną kwestię, gdy używasz powłoki do usuwania folderów .svn, potrzebujesz argumentu -depth, aby uniemożliwić komendzie find wejście do właśnie usuniętego katalogu i wyświetlenie komunikatów o błędach, takich jak np.

„znajdź: ./.svn: brak takiego pliku lub katalogu”

W rezultacie możesz użyć findpolecenia jak poniżej:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
fatihk
źródło
0

Z wiersza polecenia systemu Windows:

rmdir .svn /s /q
Michael Ross
źródło
0

Użyj następujących opcji:

svn rm --keep-local <folder name> aby usunąć folder i wszystko w nim zawarte.

svn rm --keep-local <folder name>/* aby zachować folder, ale usuń wszystko z folderu.

Oto przykład tego, co się dzieje:

~/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
Ryan
źródło
-1

W systemie Windows 10 musimy przejść do Windows Explorer, a następnie przejść do Viewi zaznaczyć pole wyboru dla View hidden files.

Następnie przejdź do folderu połączonego z SVN w Eksploratorze Windows i usuń .svnfolder / plik.

Praseeda
źródło
Chociaż edytowałem formatowanie, ta odpowiedź w rzeczywistości nie odpowiada na pytanie. Użytkownik już wie, jak usunąć .svnfolder podstawowy , ale pyta o wszystkie podfoldery. Proszę przeczytać dokładnie na to pytanie.
CodeMouse92