W moim przypadku wystąpiło uszkodzenie w sekcji symbols
pliku xxx,v
. Oczekiwany format tag_name:tag_rev
, ale były przypadki:
- brakujące
:tag_rev
np tag_name
Naprawiono przez usunięcie linii.
- Wiele
tag_name
np. tag_name1:tag_name2:tag_rev
Naprawiono przez usunięcie drugiej nazwy znacznika (która zostanie usunięta prawdopodobnie zależy od tego, jaka jest).
- Nieprawidłowy ogranicznik nazwy/rewizji. W moim przypadku nieprawidłowy znak zawsze był
z
(istnieje tylko 1-bitowa różnica między ASCII :
i z
).
np. tag_nameztag_rev
Naprawiono, zastępując z
wartością :
.
Aby pomóc w trakcie mojego dochodzenia, dodałem linię print
do cvs2svn_rcsparse\common.py
. Jeśli przetwarzanie symboli nie powiedzie się, przyczyną jest ostatni wydrukowany znacznik.
def _parse_admin_symbols(self, token):
while 1:
tag_name = self.ts.get()
# WileCau print the token and tag_name
print 'token=|%s| tag_name=|%s|' % (token, tag_name)
if tag_name == ';':
break
self.ts.match(':')
tag_rev = self.ts.get()
self.sink.define_tag(tag_name, tag_rev)
Dodatkowy druk dodaje sporo szumu na wyjściu, więc to może być ładniejszy drukować tylko jeśli wyjątek dzieje, ale to było wystarczająco dobre dla moich potrzeb.
Znalazłem również ten link, który okazał się nie być moim problemem, ale może pomóc komuś innemu. Podziękowania dla Christiana Haarmanna za udokumentowanie tego.
http://tigris-scm.10930.n7.nabble.com/suggestions-for-cvs2svn-fix-for-error-quot-myfile-txt-v-is-not-a-valid-v-file-quot-td54240.html
W przypadku, gdy połączenie staje się nieważny, podsumowanie jest, że ktoś edytowany plik xxx,v
i ich edytor zastąpił 0x0A (LF) z 0x0D/0x0A (CR/LF), a dodatkowy charakter spowodował parser, aby sądzić, że plik jest uszkodzony.