Почему git -svn случайно меняет корневой каталог родительскому?

Я пытаюсь git-svn работать на приватном сервере svn shadowcat.

git svn clone -s http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader/
Initialized empty Git repository in /home/ecarroll/code/perl/foo/Catalyst-Plugin-ConfigLoader/.git/
Using higher level of URL: http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader => http://dev.catalystframework.org/repos/Catalyst

Что не работает? Похоже, http://dev.catalystframework.org/repos/Catalyst/Catalyst-Plugin-ConfigLoader/ имеет стандартный макет.

Есть ли простой способ получить git, чтобы извлечь из репозитория svn?

Ответ 1

Мне немного поздно ответить, что проект Catalyst-Plugin-ConfigLoader перенесен на Git, но я отвечу, если кто-то столкнется с аналогичной проблемой с другим проектом svn.

git svn пытается помочь в поиске корня репозитория svn и использовании этого вместо URL-адреса, который вы ему даете. Я нахожу это раздражающим, но, к счастью, обходной путь: используйте параметр --no-minimize-url.

Из документации git svn (git help svn):

--no-minimize-url

При отслеживании нескольких каталогов (с использованием опций --stdlayout, --branches или --tags) git svn будет пытаться подключиться к корневому (или самому разрешенному уровню) репозитория Subversion. Это значение по умолчанию позволяет лучше отслеживать историю, если целые проекты перемещаются в репозитории, но может вызвать проблемы с репозиториями, где существуют ограничения доступа на чтение. Передача --no-minimize-url позволит git svn принимать URL-адреса как есть, не пытаясь подключиться к каталогу более высокого уровня. Эта опция отключена по умолчанию, когда отслеживается только один URL/ветвь (это будет мало пользы).

Ответ 2

Я столкнулся с подобной проблемой и использовал параметр -no-minim-url. Это позволило клону преуспеть, но что-то вроде половины тегов отсутствовало. Оказывается, что запрещение клона подниматься на уровень означает, что он не мог видеть предыдущее переименование репо, которое произошло. Как только я удалил параметр -no-minim-url, появились отсутствующие теги.