Я надеялся, что кто-то с большим знанием ответит, но вот что я нашел.
Я использую тот же инструмент, моя верхняя $ VERSION - 1.7.6.msysgit.0.
Вокруг строки 3015 я вижу этот кусок кода:
while (1) {
# It is possible to tag two different subdirectories at
# the same revision. If the url for an existing ref
# does not match, we must either find a ref with a
# matching url or create a new ref by growing a tail.
$gs = Git::SVN->init($u, $p, $repo_id, $ref_id, 1);
my (undef, $max_commit) = $gs->rev_map_max(1);
last if (!$max_commit);
my ($url) = ::cmt_metadata($max_commit);
last if ($url eq $gs->full_url);
$ref_id .= '-';
}
print STDERR "Initializing parent: $ref_id\n" unless $::_q > 1;
Строка 3015 является "последним, если ($ url eq $ gs-> full_url);" поэтому $ url или $ gs-> full_url не определены, условие, которое программа не готова обработать. Я подозреваю, что что-то в структуре хранилища запутало это. В любом случае, мы можем предположить, что соответствующий URL не был найден, и выйти из цикла. Так что на вашем месте я бы попытался добавить «последний, если (определено $ url && define $ gs-> full_url);» до 3015 и посмотрим что получится. Это может сработать, а может и нет.
На самом деле отладка программы началась бы с определения неопределенного и выяснения причины. Автору может быть интересно исправить это, особенно если вы можете отправить копию хранилища.