Subversion utknęło z powodu „poprzedniej operacji się nie zakończyło”?

229

Jeśli spróbuję zaktualizować moje repozytorium subversion, to znaczy, że muszę uruchomić czyszczenie. Jeśli uruchomię czyszczenie, oznacza to brak pliku. (Usunąłem MASYWNY katalog plików, których nie udało się dziś rano zatwierdzić z mojego domowego komputera, ale potem zatwierdzam ten sam zestaw plików z pracy, a teraz moje domowe repozytorium jest zepsute). Więc cleanup mówi:

Nie można przetworzyć czyszczenia blablabla Nie można ustawić pliku blablabla odczyt-zapis: System nie może odnaleźć określonego pliku.

Jeśli zaktualizuję, powie:

Polecenie: Błąd aktualizacji: poprzednia operacja nie została zakończona; uruchom „czyszczenie”, jeśli zostało przerwane Błąd: Wykonaj polecenie „Oczyść”. Zakończony!:

Jak mogę to odblokować?

coderama
źródło
(inne niż usunięcie wszystkich informacji SVN i ponowne sprawdzenie)
coderama
3
ten irytujący błąd powoduje, że nienawidzę svn. Za każdym razem muszę to ponownie sprawdzić, ponieważ czyszczenie z folderu głównego lub folderu nadrzędnego nie działa. Ale największym problemem jest to, że nie wyświetla w tym czasie ikon nakładek, więc nie wiem, który plik został zmieniony na kopię zapasową przed sprawdzeniem
phuclv
Post autorstwa @ sigurd-v jest prawdziwą odpowiedzią na pytanie, które pomogło mi i wielu innym: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Odpowiedzi:

102

Byłem w podobnych sytuacjach. Czy próbowałeś uruchomić czyszczenie z katalogu głównego swojego obszaru roboczego? Wiem, że czasami czyszczenie z katalogu potomnego (gdzie leży problem) nie działa, a czyszczenie z katalogu głównego obszaru roboczego działa.

Jeśli to nadal się nie powiedzie, skoro skasowałeś gdzieś katalog dziecięcy. Spróbuj również usunąć 1 poziom wyżej z katalogu potomnego (zakładając, że nie jest to katalog główny), a następnie ponów próbę aktualizacji i czyszczenia.

Jeśli próby czyszczenia nie powiodą się na żadnym poziomie, odpowiedzią jest niestety pobranie nowej kopii roboczej.

Joshua McKinnon
źródło
4
za sprzątanie od dziecka reż! Mi to pasuje!
Franva
1
Jeśli to czytasz, masz kłopoty :) Nigdy nie wpadłem w taki bałagan z Gitem (jak dotąd). Skończyło się na czyszczeniu / przywracaniu / czyszczeniu itp. W dowolnym katalogu, w którym mogłem, jeśli Svn mi na to pozwoli.
aliopi,
2
Post autorstwa @ sigurd-v jest prawdziwą odpowiedzią na pytanie, które pomogło mi i wielu innym: stackoverflow.com/a/22717607/5613292
Mehdi Javan
Uruchomiłem Oczyszczanie z Windows FileExplorer (z Turtoise) i dał mi to bardziej skomplikowany błąd, który powiedział mi, jaki jest plik z problemem, w jakiś sposób SVN zgubił ten plik, plik darm * .cache, więc wziąłem inny .cache i zmień jego nazwę, aby zastąpić brakujący plik, uruchom czyszczenie, tym razem żadnych błędów, WSZYSTKIE NAPRAWIONE !!
Jhollman
331

Często nie ma potrzeby nowej kasy lub kopiowania.

Właśnie rozwiązałem podobny problem związany z błędem „poprzednia operacja nie została zakończona” z pomocą tego ( Link )

Wygląda na to, że svn czasami zacina się podczas przetwarzania poleceń / operacji. Wszystkie te operacje są przechowywane w pliku bazy danych wc.db w folderze .svn.

Pobierając SQLite do mojego katalogu zakupów i uruchamiając

sqlite3.exe .svn/wc.db "select * from work_queue"

możesz uzyskać listę wszystkich oczekujących operacji. Te operacje nazywają błędem „niedokończone”.

Biegiem

sqlite3.exe .svn/wc.db "delete from work_queue"

wszystkie stare operacje są usuwane z kolejki roboczej, a błąd znika. Nie potrzebujesz nowej kasy ani nic takiego

Sigurd V.
źródło
5
Zawsze powinieneś spróbować uruchomić czyszczenie przed wypróbowaniem powyższego rozwiązania. Działa to, jeśli chcesz uruchomić zablokowane repozytorium SVN bez konieczności pobierania nowej kopii roboczej.
Sigurd V
7
Pobieranie sqlite.exe i uruchamianie usuwania było w rzeczywistości szybsze niż wyewidencjonowywanie i scalanie - świetna odpowiedź
Jeffrey Knight
12
Po tym dostałem również „zamknięty”, ale udało mi się to zrobić dzięki „czyszczeniu svn”
Jeffrey Knight
1
Uruchomiłem to na Debianie, zainstaluj za pomocą apt-get install sqlite3, a następnie możesz uruchomić powyższe polecenia bez .exe
Richard Merchant,
3
Dostałem również komunikat „zablokowany”, ale potem uruchomiłem polecenie „Wyczyść”, zaznaczając pole „zrywa blokady” i zadziałało
McCoy,
114

Uruchamianie konsoli svn cleanup rozwiązało dla mnie ten sam problem.

użytkownik2902464
źródło
20
Polecenie konsoli svn cleanupdostarczy także bardziej szczegółowych informacji niż użycie wtyczki Tortoise Explorer, co czyni ją bardzo przydatną w takich sytuacjach.
Brandon S,
7
Uruchomienie polecenia konsoli prawdopodobnie dostarczy wystarczających informacji, aby faktycznie rozwiązać problem. To jest znacznie lepsza odpowiedź.
DDS
1
Cóż svn cleanup,
wybrałem
Często odnosiłem sukcesy, przeglądając katalogi rodziców i usuwając je, ale jest to trochę czasochłonne i „magiczne”. Nigdy nie wiedziałem, że zwróci szczegółowy błąd +1.
Phil Cooper
Po uruchomieniu svn cleanupupewnij się, że konsola jest podniesiona. Nie zrobiłem tego początkowo i dostałem red-write: Access is deniedbłąd.
Tony,
26

Właśnie miałem podobny problem. Uruchomienie Process Explorer pokazało, że inny program (Notepad ++) miał uchwyt pliku do folderu, który SVN próbował usunąć. Kiedy zamknąłem Notepad ++, „Clean Up” mógł działać poprawnie.

Glen Little
źródło
Może to spowodować problem wymieniony w pytaniu. Ale obawiam się, że nie może go zlikwidować, jeśli już się to wydarzyło.
Gangnus
19

Napotkałem ten problem po dodaniu słoika, który jest już w SVN i dodałem nową wersję o tej samej nazwie.

W Eclipse próbowałem tego

  1. Kliknij prawym przyciskiem myszy folder> Zespół> Odśwież / Oczyść.
  2. Wyczyść, skompiluj i odśwież moją aplikację.
  3. Uruchom ponownie środowisko Eclipse.

Korzystając z powyższych kroków, mogę przeprowadzić synchronizację.

Rakesh Chouhan
źródło
1
Pracował dla mnie. Trzeci krok nie jest obowiązkowy (zrestartuj Eclipse).
jpmottin
To też działało dla mnie, próbowałem tak wielu rzeczy, ale nie działało. Zamknąłem studio wizualne i przeprowadziłem porządki. wielkie dzięki
AhammadaliPK,
18

Próbowałem tutaj najczęściej głosowanych odpowiedzi i kilku innych bezskutecznie. Mój WORK_QUEUEstół był pusty i nie mogłem spróbować wyczyścić wyższego folderu. Co zrobił praca była następująca (to poprzez tortoisesvn);

  • Kliknij folder prawym przyciskiem myszy
  • Idź do TortoiseSVN -> Oczyść ...
  • Upewnij się, że opcja Break Locksjest zaznaczona i kliknij OK

Operacja czyszczenia zakończyła się pomyślnie i mogę kontynuować. Nie jest wymagane pobieranie sqlite3 ani innych skomplikowanych rozwiązań.

DiskJunky
źródło
2
Złamanie zamków nie robi tego, co myślałem. Łamie tylko lokalne blokady, których używa w systemie. Nie blokuje ustawień, które ustawił ktoś inny.
Brian Carlton
1
sqlite3 czasami rozwiązał mój problem, ale ta metoda była zbyt trudna do zapamiętania, a czyszczenie tak często kończyło się niepowodzeniem. Ta metoda mnie uratowała ...
sc.
9

Próba uruchomienia czyszczenia, gdy twoje pliki są otwarte, sprawiła mi problemy. jak tylko zamknąłem aplikację (Visual studio), przeprowadziłem czyszczenie i zakończyło się to sukcesem

Jan
źródło
1
Prawdziwe. Upewnij się, że pliki nie są używane lub wyewidencjonowane jako inny użytkownik, na przykład Administrator w systemie Windows.
froggythefrog
6

Używam żółwia SVN. Jeśli czyszczenie się nie powiedzie, zaznacz opcję czyszczenia

Upewnij się, że opcja Break Locks jest zaznaczona.

Krok czyszczenia

  • lewy przycisk myszy w folderze eksploracji
  • wybierz menu „Tortoise SVN” -> „Oczyść ...”
  • zaznacz „ Break Locks ” zaznaczone i naciśnij „ok”

To już odpowiedział, ale czasami obraz pomaga

wprowadź opis zdjęcia tutaj

sc
źródło
4

Mam ten sam problem, w moim przypadku użyłem żółwia svn z aplikacją, którą mam na myśli. Korzystając z powłoki cmd systemu Windows w trybie root, zastosowałem czyszczenie svn, a następnie aktualizację svn .... Potem możesz wrócić do trybu aplikacji i będzie działał idealnie!

GutiMac
źródło
2

Próbowałem usunąć folder .svn w inne miejsce i umieściłem go z powrotem w tym samym folderze głównym. Po tym, jak próbowałem zaktualizować SVN, został zaktualizowany. Nie wiem jak to dokładnie działało.

Ajayvignesh
źródło
2

Miałem ten sam problem i jakoś odkryłem, że mam ukryty plik .svn na poziomie c: \. Po usunięciu tego ukrytego folderu (.svn) wszystko działało dobrze. Musiałem przypadkowo utworzyć katalog roboczy na dysku głównym.

Mike Gold
źródło
2

W moim przypadku miałem problemy z uruchomieniem zegarka. Po zatrzymaniu mogłem wykonać polecenie Oczyść.

Mariusz Pawelski
źródło
To pomogło mi zabić niechcianą JVM i postęp.
Danie
2

cześć chłopaki w moich przypadkach po zamknięciu programu Visual Studio i ponownym uruchomieniu programu CleanUp działa dobrze

Ali Sadri
źródło
2

Utknąłem również z tym samym problemem, który próbowałem wydmuchać:

1. Spróbuj zabić proces związany z svn tj. TSVNCache.exe i TortoiseProc 2. Odwracanie niewersjonowanych plików i usunięcie tego samego, które mam w svn. 3. czyszczenie za pomocą wiersza polecenia „czyszczenie svn”

i wreszcie po ponownym uruchomieniu pulpitu działało to dla mnie, więc dla ponownego uruchomienia systemu działało dla mnie

Ankur Nirmalkar
źródło
1

usuń svn z folderu głównego i zastąp go inną żywotną kopią, którą masz z elsewere.i następnie zaktualizuj. Folder svn będzie zwykle folderem ukrytym. Upewnij się więc, aby odkryć folder przed wykonaniem powyższych kroków.

reklama digish
źródło
1

Obejście, które zadziałało dla mnie:

  1. Wytnij zawartość katalogu i skopiuj ją do innego folderu.
  2. Uruchom czyszczenie z wiersza poleceń na pustym folderze.
  3. Skopiuj pliki z powrotem do oryginalnego folderu.

Zrobione, ale nie mogę wyjaśnić, dlaczego tak się dzieje. Jeśli nie usuniesz plików, polecenie czyszczenia powie, że nie może odczytać / zapisać tych plików.

Paolo
źródło
1

Miałem ten sam problem, co działało dla mnie:

  1. Skopiuj foldery i pliki w inne miejsce, powiedz do folderu (ostatnio zmieniłem moje pliki, a zobowiązanie nie powiodło się i doprowadziło do rozwiązania problemu)
  2. sprawdź nową kopię roboczą
  3. skopiuj zmienione pliki z folderu do kopii roboczej i zastąp istniejące pliki. Zatwierdzanie / aktualizacja powinna już działać
Gość
źródło
1

Wystąpił błąd typu „Nie można zmienić uprawnień pliku” /Users/Code/UnitTest.cpp ”: Brak takiego pliku lub katalogu”. Subversion myli się z plikiem, którego już nie ma. Po prostu zrobiłem coś w stylu „echo ABCD >> /Users/Code/UnitTest.cpp”, aby utworzyć kopię pliku, a następnie oczyścić. Zadziałało.

Witaj świecie
źródło
1

W moim przypadku błąd pojawił się podczas próby zatwierdzenia z poziomu IDE. Kiedy wykonałem zatwierdzenie tych samych katalogów za pomocą TortoiseSVN w eksploratorze, operacja się powiodła.

Dani
źródło
1

Stało się to dla mnie, gdy korzystałem z zewnętrznych, a jeden z nich był uszkodzony. Musiałem przejść do tego folderu i wykonać czyszczenie. Następnie czyszczenie działało dla całej kopii roboczej.

Przykład: używając zewnętrznego ^/widgets/foo common/foo-widget, najpierw wyczyść folder common/foo-widget.

erikH
źródło
1

Rozwiązałem ten błąd dzisiaj, gdy wystąpił podczas próby zatwierdzenia do SVN. Błąd był prawdziwy, TortoiseSVN nie mógł uzyskać dostępu do pliku, który próbowałem zatwierdzić. Ten plik został zapisany podczas działania programu „Jako administrator” w systemie Windows. Oznacza to, że plik ma dostęp administratora, ale nie ma dostępu z mojego konta (TortoiseSVN działa jako użytkownik interaktywny). Przejęłem na własność nominowany plik pod moim kontem Windows, a następnie czyszczenie było w stanie kontynuować.

Kim Anthony Groves
źródło
0

Początkowo mam ten problem podczas próby zalogowania się za pomocą TortoiseSVN. Początkowo zarówno czyszczenie TortoiseSVN, jak i czyszczenie svn konsoli zakończyły się niepowodzeniem z podobnymi komunikatami jak oryginalny plakat.

Ale moim rozwiązaniem (dowiedzionym przypadkowo) było tylko poczekanie kilku minut. Myślę, że TSVNCache trzymał niektóre z tych plików podczas odprawy.

Jahmic
źródło
0

wykonaj poniższe kroki.

1) Przejdź do katalogu, w którym nie można skutecznie wyczyścić za pomocą svn . (Folder główny lub folder podrzędny).

2) Wybierz .svn folder w katalogu, wytnij ten folder i wklej go na osobnym dysku lub w osobnej lokalizacji (poza katalogiem svn)

3) Teraz wróć do katalogu - kliknij prawym przyciskiem myszy i wybierz TortoiseSVN -->Repo-browser

4) Checkout folder (nie wykona nowej transakcji).

5) Wszystkie twoje przedmioty zostaną ponownie zaktualizowane i naprawi to wewnętrzny problem SVN, a problem powinien zostać rozwiązany.

Kunal Khatri
źródło
wykonuje TYLKO pełną kasę. jakaś pomoc ?
candidJ
0

W moim przypadku działała instancja wirtualnej maszyny wirtualnej Java w tle, zabijając, które czyszczenie zakończyło się powodzeniem.

Danie
źródło
0

Wziąłem folder .svn od mojego programisty i zastąpiłem go folderem .svn. To zadziałało dla mnie. Nie wiem, jakie mogą być inne konsekwencje!

Manish Dubey
źródło
0

Za pomocą tego linku https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

Zauważyłem, że w samouczku zaznaczono 6 najlepszych opcji. W desperacji spróbowałem użyć tych pól wyboru i ku mojemu zaskoczeniu zadziałało. Przeczytaj uważnie, co każdy z nich robi. Patrząc na opis każdego z nich, wydawało mi się, że można je bezpiecznie dołączyć, więc jeden z tych sprawdzonych elementów najwyraźniej rozwiązał problem, który mnie powstrzymywał.

eaglei22
źródło
0

Może się to zdarzyć, gdy pliki są nadal otwarte podczas próby przełączenia / czyszczenia SVN.

Miałem oddział, w którym utworzyłem nowy plik, który otworzyłem w innej aplikacji. Przełączenie do innej gałęzi nie mogło usunąć pliku, co spowodowało awarię przełącznika. Powodowało to również svn cleanupawarię, jednak nie jest to wyświetlane jako przyczyna w interfejsie użytkownika Tortoise SVN.

Uruchomienie svn cleanupz okna konsoli (w folderze głównym) wyraźnie pokazuje błądfile\location\file.ext: The process cannot access the file because it is being used by another process

Zamknięcie wszystkich otwartych uchwytów plików / okien i uruchomienie konsoli svn cleanupumożliwia prawidłowe działanie czyszczenia.

Krótka historia - uruchom svn cleanupkonsolę, aby zobaczyć bardziej szczegółowy błąd.

Jamie Pollard
źródło
0

Oprócz odpowiedzi Sigurda V (powinieneś spróbować najpierw), niektóre większe bazy kodu mają wiele folderów „.svn” i niekoniecznie ten w katalogu głównym, który ma zablokowane zadanie.

W takim przypadku musisz sprawdzić każdy z nich. Jeśli masz już SQLite i PowerShell, możesz szybko zlokalizować niepoprawny katalog.

Aby sprawdzić, które foldery są zablokowane, uruchom (zamieniając path\to\sqlite.exe):

Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach { $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach { echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue" } }.

Daje to listę katalogów .svn, a poniżej każdego z nich listę bieżących zadań.

Jeśli są jakieś z niedokończonymi zadaniami, dla każdego uruchomienia (zastępowanie path\to\sqlite.exei path\to\.svn\wc.db):

path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"

Robert Gowland
źródło
0

Widziałem kilka problemów svn, w tym ten, rozwiązanych przez usunięcie / utworzenie .svn/tmpkatalogu. Następnie uruchomićsvn cleanup

Vinnie James
źródło