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.


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ń).


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

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.


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.


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


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.


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

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


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

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ś.


4

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


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/


2

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


2

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


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



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.


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`

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.


0

Używam rsync:

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

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 :)


0

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


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.


0

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

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

Usuwa go z lokalnego repozytorium.


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 {} \;


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

-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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.