Возможно, это слишком поздно для вас, но, по случайности, кто-то другой заходит на эту страницу, у нас тоже была эта проблема.Причина сбоя действительно связана с пробелами в имени ветви - в частности, подпрограмма cmt_metadata()
в git-svn.perl вызывает cat-file
с неэкранированным именем ветви.Я полагаю, что не было бы слишком сложно настроить этот метод, чтобы быть более надежным.
Однако.
Хотя это и стало причиной сбоя, оказывается, что даже попадание в этотчасть кода была признаком того, что у нас что-то не так.В частности, с несколькими branches
записями в git config, правые части некоторых правил конфликтовали.У нас было что-то вроде
branches=/branches/a*:/refs/remotes/origin/*
branches=/branches/b*:/refs/remotes/origin/*
, которое я считаю конфигурацией по умолчанию, которую вы получаете, если вы используете --branches=/branches/a* --branches=/branches/b*
в своих init
или clone
командных строках.Оказывается, правая часть этих правил сильно предпочитает быть различимой, а также левой.Таким образом, начиная с нуля с git svn init
, затем редактируя .git/config
, добавляя:
branches=/branches/a*:/refs/remotes/origin/a/*
branches=/branches/b*:/refs/remotes/origin/b/*
и выбрасывая git svn fetch
, похоже, это исправилось.В ветвях все еще есть пробелы, но они больше не попадают в код, который им не нравится.