2008-12-03 10 views
15

Uruchamiając get svn pobrać pociągnąć najnowsze nowych oddziałów z górnej repozytorium svn mam ten błąd:Błąd krytyczny rozpakowywania obiekt drzewa podczas svn git sprowadzić

$ git svn fetch 
fatal: failed to unpack tree object 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d 
read-tree 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d: command returned error: 128 

Teraz każdą próbę git svn na tym lokalne repo powoduje ten sam błąd. Oryginalnie używałem wersji git w wersji 1.5.6.4_0 i po błędzie próbowałem aktualizacji do wersji 1.6.0.2_2 i problem nadal występuje.

Czy istnieje sposób na usunięcie tego zepsucia? Świeży klon git svn repozytorium jest w porządku, ale chciałbym zachować istniejącą konfigurację. Przejrzałem dokumentację i szukałem go bez problemu.

Odpowiedz

3

Najbardziej prawdopodobną przyczyną jest plik lub zatwierdzenie (odniesienia do drzewa) są uszkodzone lub ich brakuje. Lub samo drzewo może być uszkodzone. Sprawdź z:

git fsck --unreachable HEAD $(cat .git/refs/heads/*) 

Pokaże to zestaw "zwisających" plików, których nie obchodzi; uszkodzone pliki zgłaszają "Nieprawidłowy SHA1" lub coś takiego. Nie wiem, jak zgłosiłby brakujący plik. Usuń wszystkie uszkodzone przedmioty i rsync z repozytorium, aby je zastąpić.

+0

Dzięki za informacje. Niestety, nie pojawiają się uszkodzone pliki, tylko garstka nieosiągalnych drzew/commits/blobs. Używanie gita jako interfejsu do repozytorium svn Nie posiadam git-a do rsync z odzyskiwaniem. Próbowałem rsync ze świeżego klonu svn git, ale straciłem wszystkie moje lokalne gałęzie. – notascleveras

+0

W grupie dyskusyjnej (a może na liście mailingowej) pojawił się raport od 2 do 3 miesięcy wcześniej od kogoś, kto ma podobny problem, który zniknął po przepakowaniu repozytorium. Nie udało mi się znaleźć raportu, co prawdopodobnie oznacza, że ​​nie były to dokładnie te same komunikaty o błędach. – Paul

+0

Po prostu próbowałem przepakować. Brak szczęścia. Na razie przechodzę do klona świeżego git svn. Dzięki za sugestie. – notascleveras

5

Miałem ten sam problem. Jest to spowodowane szczególną wersją SVN, której git-svn nie potrafi odczytać lub jakoś sobie z tym poradzić. Oto, co starałem się w kolejności:

  1. Przewijanie do rewizji znanej pracy: git svn reset -r 42
  2. ponowić pobierania: git svn fetch - Pobiera każdą zmianę począwszy od 42 aż do winnego (powiedzmy 50), a następnie pokazuje ten sam komunikat o błędzie.
  3. Pobierz rodzica: git svn fetch --parent - Nie pytaj mnie dlaczego. To przyniesie więcej poprawek. Nie mam pojęcia, czy jest to istotne.
  4. Ponów próbę pobrania: git svn fetch - Nadal nie działa.
  5. Pobierz każdą następną wersję:
    1. git svn fetch -r 50 - Działa.
    2. git svn fetch -r 51 - Podczas gdy nie ma komunikatu o błędzie, kontynuuj.
    3. git svn fetch -r xx - Pojawia się komunikat o błędzie, jest to zła wersja. Nie przejmuj się.
    4. git svn fetch -r xx+1 - Działa.
  6. Ponów próbę pobrania: git svn fetch - Działa! Rozpoczyna pobieranie większej liczby wersji.

Proces powinien zostać oczyszczony (prawdopodobnie w pobliżu pierwszych kroków), ale zadziałało to dla mnie, bez konieczności ponownego uruchamiania z nowym klonem.

+0

To zadziałało! Ale w moim przypadku udało mi się uzyskać "problematyczną" wersję. Właśnie zresetowałem do wersji x-1 (x jest najnowszą wersją) i pobraną wersję x, która działała, a niż "git svn fetch" po prostu działała. Czy ktoś może wyjaśnić, co naprawia? resetowanie git svn może po prostu usunąć uszkodzony plik lokalny? – TCS

3

Ten sam komunikat o błędzie wystąpił po utworzeniu nowej gałęzi SVN. Udało mi się rozwiązać ten problem poprzez usunięcie kompletny „svn .git /” katalog i pobierania z SVN jeszcze:

$ rm -rf .git/svn 
$ git svn fetch 
Rebuilding .git/svn/refs/remotes/trunk/.rev_map.1d5df120-ff1b-4f4f-af56-171ecbcc785d ... 

Ten pobrane wszystkie rewizje z SVN i ponownie rozwiązany błędu.

Powiązane problemy