Перенос svn в git с пробелом в имени ветки - PullRequest
0 голосов
/ 07 июня 2018

У меня проблема с репозиторием, который я хочу перенести в SVN.В этом репо создана ветка с пробелом в имени.Когда я запускаю команду git svn clone, у меня появляется ошибка

fatal: Not a valid object name refs/remotes/origin/My branch
cat-file commit refs/remotes/origin/My branch: command returned error: 128

Я сбрасываю репо с помощью svndumpfilter exclude, но проблема остается той же.Я пытался клонировать опцию ignore-path, но она такая же!

git svn clone --trunk=/Projet/trunk --branches=/Projet/branches --tags=/Projet/tags --authors-file=authors.txt file:///home/repo_svn/nom ../temp --ignore-path=".*(?:refs/remotes/origin/My branch|refs/remotes/origin/My%20branch)"

У вас есть решение?С наилучшими пожеланиями

1 Ответ

0 голосов
/ 30 мая 2019

Возможно, это слишком поздно для вас, но, по случайности, кто-то другой заходит на эту страницу, у нас тоже была эта проблема.Причина сбоя действительно связана с пробелами в имени ветви - в частности, подпрограмма 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, похоже, это исправилось.В ветвях все еще есть пробелы, но они больше не попадают в код, который им не нравится.

...