SVN - niezgodność sum kontrolnych podczas aktualizacji


122

Kiedy próbuję zaktualizować niektóre pliki z Subversion, pojawia się błąd:

org.tigris.subversion.javahl.ClientException: 
Checksum mismatch while updating 'D:\WWW\Project\\.svn\text-base\import.php.svn-base'; expected: '3f9fd4dd7d1a0304d8020f73300a3e07', actual: 'cd669dce5300d7035eccb543461a961e'

Dlaczego to rozumiem? Jak mogę to naprawić?

Odpowiedzi:


70

Najłatwiejszym sposobem naprawienia tego problemu (jeśli nie masz wielu zmian) jest skopiowanie zmian do innego katalogu, usunięcie katalogu, w którym Twój projekt jest wyewidencjonowany, i ponowne pobranie projektu.

Następnie skopiuj zmiany z powrotem (nie kopiuj żadnych folderów .svn), zatwierdź i kontynuuj.


9
Właśnie usunąłem folder, w którym był plik powodujący problem, i zaktualizowałem cały projekt. Teraz wydaje się być w porządku.
Koralek M.

+1 Inna alternatywa, którą znalazłem,
sprawiła, że ​​włamałem się

@SeanDowney jak to zrobić?
arvindwill

@arvindwill Przepraszamy, mój komentarz nie był zbyt jasny, ta metoda jest znacznie łatwiejsza. Oto przerażająca alternatywa: maymay.net/blog/2008/06/17/ ...
SeanDowney

2
To wcale nie jest konkretna poprawka. Zawsze możesz usunąć wszystkie swoje dane lokalne i zacząć od nowej kopii z repozytorium.
tim

197

W przypadku korzystania z SVN 1.7+ istnieje obejście opisane tutaj .

Podsumowując:

  1. Przejdź do folderu z plikiem powodującym problemy
  2. Wykonaj polecenie svn update --set-depth empty(uwaga: spowoduje to usunięcie plików, więc najpierw wykonaj kopię!)
  3. Wykonaj polecenie svn update --set-depth infinity

17
Chociaż to zadziałało, zauważ, że "svn update - set-depth empty" usunie wszystko z tej ścieżki, więc najpierw zrób kopię
tristanbailey

3
To działało świetnie przy naprawianiu gigantycznego repozytorium w zdalnej lokalizacji. Podczas gdy wykonanie nowego zamówienia zadziałałoby, zajęłoby to ponad godzinę; zajęło to kilka minut.
Brian Gillespie

cześć, używam okna i żółwia jako klienta svn. Próbowałem twojego rozwiązania. ale nadal pokazuje to
Amit Bera.

Właśnie wymieniłem katalog .svn z nowego repozytorium na stare, zadziałało :)
harishkumar329

To działało świetnie dla mnie, dzięki! Warto zauważyć, że pierwszym punktem jest przejście do folderu (lub pliku), który powoduje problem. Wtedy nie musisz dużo aktualizować. Miałem folder zawierający kilkadziesiąt plików, w którym użyłem Tortoise „Aktualizuj do-> tylko ten element” w folderze, a następnie „Aktualizuj do-> w pełni rekurencyjnie”, aby to wszystko przywrócić. Mimo to wszyscy uważajcie, że spowoduje to usunięcie plików w tym folderze! Na powolnym łączu VPN z repozytorium o wielkości wielu gigabajtów i precyzyjnie dostrojonym - set-depths, „standardowe” rozwiązanie było po prostu bezużyteczne.
dash-tom-bang

6

Miałem podobny problem. Głównym dostawcą był program antywirusowy „FortiClient” (antywirus + klient VPN). Kiedy to wyłączyłem - wszystkie aktualizacje / checkout zostały wykonane poprawnie


1
To jedyna odpowiedź, która rozwiązała mój problem. Nigdy nie mogłem o tym pomyśleć. Dzięki!
czas:

5

Znalazłem łatwiejszy sposób rozwiązania tego problemu. Nie możesz tego zrobić bezpośrednio z zaćmienia. Kroki:

  1. Przejdź do struktury folderów obszaru roboczego w systemie Windows
  2. zmienić nazwę folderu
  3. odświeżanie w zaćmieniu
  4. Teraz folder i pliki zostaną usunięte z projektu w eclipse i pojawią się w nowym folderze o zmienionej nazwie
  5. Teraz spróbuj opcji „Synchronizuj z repozytorium”.

Spowoduje to przywrócenie podstawowego folderu tekstowego w .svnfolder. Niezgodność sumy kontrolnej podczas aktualizacji błąd nie będzie się dalej pojawiać.


1

Zdarzyło mi się to podczas korzystania z wtyczki Eclipse i synchronizacji. Plik powodujący problem nie miał żadnych lokalnych zmian (iw rzeczywistości żadnych zdalnych zmian od czasu mojej ostatniej aktualizacji). Wybrałem "przywróć" dla pliku bez żadnych innych modyfikacji plików i wszystko wróciło do normy.


1

Miałem ten sam błąd, ale dla jednego pliku. W IntelliJ IDEA mogłem wykonać kopię pliku, a następnie przejść do projektu i usunąć ten plik, a następnie zatwierdzić pomyślnie. Następnie utworzyłem nowy plik o tej samej nazwie i skopiowałem zawartość z powrotem do niego. Myślę, że straciłbyś historię zmian, ale to działa.


1

Jeśli współpracuje z Tobą kolega:

1) poproś go o zmianę nazwy pliku powodującego problemy i commit

2) ty update(teraz widzisz plik z nieprawidłową sumą kontrolną o innej nazwie)

3) zmień nazwę z powrotem na oryginalną nazwę

4) commit(i poproś kolegę o updateprzywrócenie nazwy pliku w jej pierwotnym stanie)

To rozwiązało problem.



1

Używam Tortoise SVN, po wypróbowaniu wszystkich rozwiązań na tej stronie i nie działa,

W końcu wykonuję kopię zapasową pliku powodującego problem. i użyj opcji Repo Browserusuń znajdujący się w nim plik powodujący problem, a następnie zaktualizuj folder lokalny, aby plik w folderze lokalnym został usunięty. Następnie skopiuj plik kopii zapasowej i Add > Commitmogę pomyślnie zaktualizować.

Jedyną wadą tej metody jest to, że historia tego pliku zostanie usunięta.


0

Aby rozwiązać ten problem, wykonaj następujące czynności:

  1. Otwórz plik wpisów znajdujący się w katalogu .svn, w którym pojawia się błąd.
  2. Znajdź wpis dla pliku, który zawiera błąd i zastąp wartość oczekiwaną błędną wartością rzeczywistą.
  3. Teraz zsynchronizuj i spróbuj zaktualizować.

Jeśli nadal nie działa. Spróbuj tych. To tylko obejście:

  1. Usuń plik z systemu.
  2. Usuń wpis pliku z pliku wpisów. (Począwszy od nazwy pliku do znaków specjalnych).
  3. Teraz zsynchronizuj i zaktualizuj plik.

Spowoduje to pobranie najnowszej wersji pliku z repozytorium, a wszystkie konflikty zostaną rozwiązane.


0

miał podobny problem na serwerze, ale katalog SVN był bardzo duży, nie chciałem usuwać i ponownie synchronizować, więc po prostu utworzyłem lokalną kopię plików, a następnie je usunąłem. Gdy aktualizacja się powiodła i ponownie dodano pliki.


0

spróbuj usunąć plik i usuń odniesienie do pliku z wpisów plików w katalogu .svn


0

Miałem podobny błąd i naprawiłem w następujący sposób:

(Moja `` poprawka '' opiera się na założeniu, które może być poprawne lub nie, ponieważ nie wiem zbyt wiele o tym, jak działa subversion wewnętrznie, ale zdecydowanie zadziałało)

Zakładam, że plik .svn \ text-base \ import.php.svn-base powinien być zgodny z najnowszym zatwierdzeniem.

Kiedy sprawdzałem plik, w którym wystąpił błąd, plik podstawowy NIE pasował do ostatniego zatwierdzenia w repozytorium.

Skopiowałem tekst z ostatniego zatwierdzenia i zapisałem go w folderze .svn, zastępując niepoprawny plik (wykonałem kopię zapasową na wypadek, gdyby moje założenia były błędne). (plik był oznaczony jako tylko do odczytu, wyczyściłem tę flagę, nadpisałem i ustawiłem z powrotem jako tylko do odczytu)

Byłem wtedy w stanie pomyślnie popełnić.


0

Moje rozwiązanie brzmiało:

  1. Wykonaj czyszczenie svn z systemu plików
  2. Przejdź do innego oddziału
  3. Rozwiązuj konflikty
  4. Przejdź do „problematycznej” gałęzi
  5. Przeprowadź czyszczenie z Spring Tool Suite
  6. Wykonaj aktualizację projektu

0

1. `` aktualizuj do wersji przywracania '' zaznacz 'tylko tę pozycję' w katalogu 2. ponownie aktualizuj zaznacz `` W pełni rekurencyjne ''

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.