2012-06-14 17 views
15

Próbuję zaimportować nasze repozytorium SVN do Git. Kiedy biegnę albo polecenie:Autor nie zdefiniowany podczas importowania repozytorium SVN do Git

git svn --authors-file=/path/to/authors --trunk=trunk clone https://my-repo/project . 

czy ta komenda:

svn2git https://my-repo/project --no-minimize-url -v --authors /path/to/authors 

Zarówno zwrócić ten błąd:

Author: patrick not defined in /path/to/authors file 

..ale o ile wiem, nie ma nic nie tak z plikiem moich autorów:

$ grep patrick /path/to/authors 
patrick = Patrick <[email protected]> 

Ten błąd nie występuje, dopóki nie przejdzie do wersji 8700, więc musi poprawnie przechwytywać inne nazwy autorów.

Co tu się może dziać? Dzięki.

+0

Myślę, że może to być spowodowane tym, że użyłem <[email protected]> w przypadku wielu nazwisk odbiorców. – Greg

Odpowiedz

2

Były dwa problemy:

I rozwiązać najpierw poprzez przypisanie unikalnych adresów e-mail dla każdego autora.

Również nazwa użytkownika to "patrick". Nie mam pojęcia, jak to się stało, ale używając svnadmina, mogłem zmienić wszystkie wystąpienia tego pseudonimu na "patrick".

+1

Miałem ten sam problem. Z pewnością nie ma problemu z wieloma kontami zmapowanymi na ten sam adres e-mail. Miałem wiele przypadków, w których SVN miał autora z dodatkowym miejscem na końcu. Usunięcie go umożliwiło płynne przejście migracji. – nopuck4you

+0

jakiego polecenia svnadmin użyłeś? – dashesy

+0

dashesy: ​​http://stackoverflow.com/a/11767274/329062 – Greg

9

Podobny problem wystąpił podczas próby wykonania tego w systemie Windows. Okazało się, że kodowanie pliku, w którym zapisałem autorów, zostało ustawione na UTF-8 zamiast UTF-8 bez LM. Ponieważ wersja "z BOM" dodaje kilka dodatkowych bajtów na początku pliku, nigdy nie znaleziono pierwszego autora na liście.

+0

Narzędzie migracji BitBucket automatycznie generuje plik authors.txt. Ponad 2 lata po twojej odpowiedzi i pierwotnym pytaniu, miałem ten sam problem. Mój plik został zakodowany z jakiegoś powodu jako UTF16LE. Zmiana na UTF-8 bez LM-a sprawiła, że ​​konwerter działa na bankomacie. Dzięki! – Psychokiller1888

+0

W systemie Windows możesz użyć Notepad ++, aby przekonwertować plik na UTF8 bez LM. Kodowanie -> Kodowanie w UTF-8 (proste, bez niczego po tym jest to bez LM). – BogdanC

0

Widziałem ten sam błąd , ale z innego powodu. Wpisze tutaj moje rozwiązanie jako "odpowiedź", ponieważ może to być odpowiedź dla innych osób, które znajdują to pytanie (nawet jeśli nie jest to rozwiązanie/odpowiedź na problem/pytanie OP):

Byłem uruchamianie svn log z kasy projektu. Ale wyewidencjonowano tylko trunk, więc uwzględniono tylko autorów, którzy zatwierdzili zmiany w bagażniku. Było to oczywiście większość autorów, więc klon działał przez długi czas (ponad 90 minut), zanim nastąpiłby awaria z powodu błędu.

Jako że sprawdzenie całego katalogu głównego projektu nie było realną opcją (ma ponad 500 gałęzi i znaczników, a zrzut wynosi ponad 600 GB), stwierdziłem, że mogę uruchomić svn log na zdalnym repo tak:

svn log -q svn://server/path-to-project-root 

rzeczywista komenda zrobił też trochę filtrowania i formatowania danych wyjściowych:

svn log -q svn://server-url/path-to-project-root | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt 
0

szukać żadnych pustych przestrzeni w początku nazwiskami autorów i usuń spacje. Jeśli to nie pomoże, spróbuj przenieść nazwisko autora na początek pliku.

0

Miałem ten sam problem, ale przyczyna była w rzeczywistości inna: użyłem Powershell do zrzutu listy autorów z SVN i nie zdawałem sobie sprawy, że zapisał wynik jako plik UTF-16.

Okazało się, że git (przynajmniej do git dla Windows w wersji 2.16.1) nie może używać plików UTF-16. Konwersja pliku do UTF-8 zrobiła dla mnie tę sztuczkę.

Powiązane problemy