Ten błąd pojawia się, gdy svn update
:
Kopia robocza XXXXXXXX zablokowana Wykonaj polecenie „Oczyść”
Kiedy uruchamiam czyszczenie, dostaję
Czyszczenie nie przetworzyło następujących ścieżek: XXXXXXXX
Jak wyjść z tej pętli?
Ten błąd pojawia się, gdy svn update
:
Kopia robocza XXXXXXXX zablokowana Wykonaj polecenie „Oczyść”
Kiedy uruchamiam czyszczenie, dostaję
Czyszczenie nie przetworzyło następujących ścieżek: XXXXXXXX
Jak wyjść z tej pętli?
Odpowiedzi:
Jednym podejściem byłoby:
Inną opcją byłoby usunięcie folderu najwyższego poziomu i ponowne sprawdzenie. Mam nadzieję, że do tego nie doszło.
Dla mnie sztuczka polegała na uruchomieniu svn cleanup
na górze mojej kopii roboczej, a nie w folderze, w którym pracowałem przez cały czas przed wystąpieniem problemu.
Zajrzyj do twojego .svn
folderu, znajdzie się w nim plik o nazwie lock
. Usuń ten plik, a będziesz mógł zaktualizować. W .svn
katalogu każdego podkatalogu może znajdować się więcej plików blokujących . Będą również musieli usunąć. Można to zrobić jako partia po prostu z wiersza poleceń za pomocą np
find . -name 'lock' -exec rm -v {} \;
Pamiętaj, że ręcznie edytujesz pliki w .svn
folderze. Zostali tam umieszczeni bez powodu. Może to być pomyłka, ale jeśli nie, możesz uszkodzić lokalną kopię.
find . | grep ".svn/lock" | xargs rm
W moim przypadku rozwiązałem go, ręcznie usuwając rekord z rekordu blokady pliku SQLite „.svn \ wc” w tabeli WC_LOCK.
Otworzyłem plik „WC” za pomocą edytora SQLite i wykonałem
delete from WC_LOCK
Po komentarzu eakkas może być konieczne usunięcie wszystkich wpisów z WORK_QUEUE
tabeli.
Najłatwiejszy sposób:
Clean up working copy status
, Break locks
, Fix time stamps
, Vacuum pristine copies
, Refresh shell overlays
,Include externals
Wykonałeś swoją pracę z powodzeniem.
Sprawdź zrzuty ekranu w celach informacyjnych.
Pierwszy krok:
Drugi krok: włącz opcję Break lock (drugie pole wyboru w oknie podręcznym czyszczenia)
Mam nadzieję, że to ci bardzo pomoże.
Kolega z pracy ciągle widzi tę wiadomość, a dla niego dzieje się tak dlatego, że usunął katalog pod kontrolą wersji SVN bez usuwania go z SVN, a następnie utworzył nowy katalog na swoim miejscu, który nie jest pod kontrolą wersji, o tej samej nazwie.
Jeśli to twój problem ...:
Istnieją różne sposoby naprawy tego problemu, w zależności od tego, w jaki sposób / dlaczego katalog został zastąpiony.
Tak czy inaczej, prawdopodobnie będziesz musiał:
A) Zmień nazwę istniejącego katalogu na tymczasową nazwę
B) Wykonaj przywracanie SVN, aby odzyskać katalog usunięty z systemu plików, ale nie z SVN
Stamtąd ty też
A) Skopiuj odpowiednie pliki do katalogu, który został usunięty
B) Jeśli miał istotną zmianę treści w książce telefonicznej, zrobić SVN usunąć na oryginale, popełnić, i zmienić swoją nowy katalog z powrotem do żądanej nazwy, a następnie przez SVN, aby dodać , że jeden pod kontrolą wersji.
Dla mnie żadne z powyższych rozwiązań nie zadziałało. Znalazłem rozwiązanie, łamiąc zamki. Kiedy przeprowadziłem czyszczenie svn, wybrałem „Przerwij blokady” wraz z „Wyczyść stan kopii roboczej”.
Ten działał dla mnie.
Po wyczyszczeniu umożliwi aktualizację do najnowszej wersji.
Clean up working copy status
i Breaks locks
iInclude externals
Dla mnie była to właściwie wina Tortoise. Tortoise po prostu narzekało: „nie można wyczyścić, uruchomić czyszczenia”, ale kiedy uruchomiłem wiersz poleceń (czyszczenie svn), wyraźnie mi powiedział, że nie może usunąć niektórych używanych plików, co było oczywiste. Po zamknięciu programu Visual Studio (który utrzymywał pliki otwarte), czyszczenie działało poprawnie.
Inne programy mogą również utrzymywać otwarte pliki w repozytorium, powodując ten problem. Program Excel trzymający otwartą bibliotekę xls był winowajcą w innej instancji, więc rozsądne może być zamknięcie wszystkich programów, które mogą korzystać z czegokolwiek w repozytorium lub nawet ponowne uruchomienie w celu wymuszenia zamknięcia programów, a następnie ponownej próby wyczyszczenia.
Miałem ten problem, ponieważ foldery zewnętrzne nie chcą być połączone z istniejącym folderem. Jeśli dodasz wiersz właściwości svn: externals, w którym miejscem docelowym jest istniejący (wersjonowany lub nie wersjonowany) folder, pojawi się błąd zablokowania kopiowania SVN. Tutaj czyszczenie powie ci również, że wszystko jest w porządku, ale wciąż aktualizacja nie będzie działać.
Rozwiązanie: Usuń problematyczny folder z repozytorium i dokonaj aktualizacji w folderze głównym, w którym ustawiono właściwość svn: externals. Spowoduje to utworzenie folderu i wszystko znów będzie dobrze.
Ten problem powstał dla mnie, ponieważ svn: externals dla plików wymaga kontrolowania wersji folderu docelowego. Po tym, jak zauważyłem, że to nie działa w różnych repozytoriach, zmieniłem pliki zewnętrzne na folder zewnętrzny i wpadłem w ten bałagan.
Najłatwiej to zrobić, pokazując ukryte foldery, a następnie otwierając folder .SVN. Powinieneś zobaczyć zerowy plik KB o nazwie „blokada”. Usunięcie tego rozwiąże problem
Natrafiłem na ten sam problem przy użyciu SVN 1.7 i żadna z wyżej wymienionych poprawek nie działała.
Przede wszystkim upewnij się, że wykonałeś kopię zapasową wszystkich edytowanych treści.
Po spędzeniu kilku godzin (nie pobrałem ponownie wszystkiego, ponieważ mój oddział ma rozmiar ponad 6 GB), znalazłem plik db o nazwie „wc” w folderze .svn twojego oddziału.
Otwórz plik db za pomocą dowolnego menedżera db (użyłem wtyczki sqlite menedżera firefox) i przejdź do tabeli WC_LOCK. Ta tabela będzie zawierać wpisy dotyczące uzyskanych zamków. Usuń rekordy ze stołu i gotowe :)
Gdy mam ten problem, wydaje mi się, że uruchomienie polecenia czyszczenia bezpośrednio na ścieżce problemu zwykle działa. Potem ponownie uruchomię czyszczenie z działającego katalogu głównego i narzeka na jakiś inny katalog. i powtarzam, aż przestanie narzekać.
Jeśli korzystasz z komputera z systemem Windows, przejrzyj repozytorium za pomocą przeglądarki i możesz zobaczyć dwa pliki o tej samej nazwie, ale w różnych przypadkach. W Subversion rozróżniana jest wielkość liter, a Windows nie jest w stanie, więc można uzyskać blokadę, gdy Windows myśli, że ściąga ten sam plik, a Subversion nie. Usuń zduplikowane nazwy plików z repozytorium i spróbuj ponownie.
Zrobiłem to, tworząc nowy folder, sprawdzając projekt, kopiując zaktualizowane pliki do nowego folderu.
Zostało to naprawione dzięki nowej kasie.
Czy używasz TortoiseSVN i właśnie zaktualizowałeś? Miałem już ten problem przy przejściu z wersji 1.4 na 1.5 i braku restartu. (Spróbuj uruchomić ponownie).
Powodem, dla którego musisz zrestartować komputer, jest to, że plik pamięci podręcznej staje się funkcjonalny.
W przeciwnym razie, aby przejść dalej, wyeksportuj tę kopię roboczą do nowego folderu (nie kopiuj ukrytych folderów .svn), ponownie sprawdź projekt i przenieś cały kod z powrotem, a następnie kontynuuj zatwierdzanie.
po prostu usuń foldery .svn, a następnie uruchom czyszczenie w katalogu nadrzędnym. Działa świetnie!!
Często mam taki problem. Mój wzór, który powoduje problemy z czyszczeniem.
Zamykanie przeglądarki zdjęć, w której otwierany jest usunięty plik, rozwiązuje problem. Być może inne oprogramowanie może blokować czyszczenie w ten sam sposób.
Ogólnie. Uważam, że ponowne uruchomienie komputera może w takich przypadkach pomóc.
SVN zwykle aktualizuje swoją wewnętrzną strukturę (.svn / prop-base) plików w folderze przed pobraniem rzeczywistych plików z repozytorium. Po pobraniu plików zostanie to usunięte. Błąd jest często zgłaszany, ponieważ „aktualizacja” nie powiodła się lub została przedwcześnie anulowana podczas postępu aktualizacji.
Teraz aktualizacja powinna działać.
Miałem ten sam problem, ponieważ wyeksportowałem folder do folderu z kontrolą wersji. Musiałem usunąć folder z TortoiseSVN, a następnie usunąć folder z systemu plików (TortoiseSVN nie lubi niewersjonowanych podfolderów ... dlaczego nie ???)
następujące czynności powinny:
status svn | grep ". L" | sed 's /.* (. *) $ / \ 1 /' | awk '{długość wydruku (1 $), 1 $}' | sort -nr | awk '{print "pushd" $ 2 "; svn cleanup; popd"}' | sh
Nie usuwaj swojego rozwiązania!
w folderze .svn znajduje się plik o nazwie lock o długości 0 bajtów
Możesz usunąć wszystkie te pliki ze wszystkich folderów .svn w swoim rozwiązaniu i będzie działać
W moim przypadku zadziałało
Odwrócenie plików na miejscu i ponowne pobranie w tej samej lokalizacji rozwiązało dla mnie ten problem.
W TortoiseSVN, aby wykonać odwracanie w miejscu, przeciągnij folder główny kopii roboczej z listy plików do siebie w drzewie katalogów i wybierz z menu podręcznego opcję „SVN Export wersjonowane elementy tutaj”. TortoiseSVN zauważa, że miejsce docelowe jest takie samo jak źródło, i sugeruje odwrócenie kopii roboczej.
Po odwróceniu wykonaj świeżą transakcję w tym samym folderze (który teraz zawiera niewersjonowaną kopię wszystkich plików, które posiadałeś). TortoiseSVN ostrzeże Cię, że sprawdzasz w istniejącym folderze, ale możesz iść dalej.
Następnie porządki, aktualizacje i inne operacje działały bez żadnych problemów. Ponieważ oba powyższe kroki zachowują lokalne modyfikacje, nie powinna nastąpić utrata informacji (ale tworzenie kopii zapasowej kopii roboczej przed tym może jednak być dobrym pomysłem).
Jedno ostrzeżenie: jeśli kopia robocza zawiera wersje mieszane lub niezatwierdzone zmiany właściwości, informacje te zostaną utracone. Dla mnie nie jest to częste zdarzenie, a biorąc pod uwagę wybór uszkodzonej kopii roboczej lub utratę niezaangażowanych zmian własności, wybieram to drugie.
Miałem ten problem, w którym działało „czyszczenie”, ale „aktualizacja” nadal nie powiodła się. Rozwiązaniem, które działało, było usunięcie danego folderu za pomocą Eksploratora Windows, a nie usunięcie TortoiseSVN (co oznacza usunięcie jako coś do zatwierdzenia w repozytorium, a następnie zrobiłem „pobranie”, aby zasadniczo „zaktualizować” folder z repozytorium.
Więcej informacji na temat różnicy między usunięciem O / S a usunięciem SVN tutaj: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html
Szczególnie:
Kiedy TortoiseSVN → Usuń plik, jest on natychmiast usuwany z kopii roboczej, a także oznaczany do usunięcia w repozytorium przy następnym zatwierdzeniu.
I:
Jeśli plik zostanie usunięty za pomocą eksploratora zamiast menu kontekstowego TortoiseSVN, okno dialogowe zatwierdzenia pokazuje te pliki i pozwala usunąć je również z kontroli wersji przed zatwierdzeniem. Jeśli jednak zaktualizujesz kopię roboczą, Subversion wykryje brakujący plik i zastąpi go najnowszą wersją z repozytorium.
Jeśli korzystasz z systemu Linux, spróbuj tego:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
Następnie uruchom cleanup
polecenie w tym katalogu, a następnie spróbuj zaktualizować.
Wykonałem następujące czynności, aby naprawić problem:
W eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt, w podmenu otwierającym kliknij subversion i wybierz czyszczenie. Rozwiąże problem, tak jak dla mnie. Mam nadzieję, że to zadziała.