Подтвердить что ты не робот

Git svn clone приводит к пустой директории

У меня есть svn-репозиторий с структурой проекта:

/root/projectA/trunk
/root/projectA/branches
/root/projectA/tags

/root/projectB/trunk
/root/projectB/branches
/root/projectB/tags 

Я хочу клонировать projectA. Когда я запускаю:

git svn clone -r <revision number>:HEAD <url>/root/projectA

Я не получаю ошибок и репозиторий git создается в новом каталоге projectA. Однако каталог пуст. Мне не хватает чего-то?

4b9b3361

Ответ 1

Ниже команда выполнила задание:

  git svn clone -r HEAD <url>/root/projectA 

Ответ 2

Моя проблема заключалась в использовании -s или --stdlayout, потому что у моего svn-репо не было стандартного макета (ствол, ветки, теги).

Ответ 3

У меня была та же проблема, и она была решена с использованием аргумента -no-metadata. В вашем случае это будет

git svn clone -r <revision number>:HEAD <url>/root/projectA --no-metadata

Ответ 4

Для всех, включая параметр authors-file, git svn clone будет полностью останавливаться, если он встречает автора без значения поиска в предоставленном файле авторов. Если вы не обращаете внимания, git "alert" для этого может показаться, что репо закончило клонирование и не заявляет, что процесс не завершен. Каталог repo будет пустым, кроме .git.

Если вы добавите отсутствующего автора, затем запустите команду exact, git продолжит работу там, где она остановилась.

Ответ 5

Если возникла аналогичная проблема, выполнение git reset --hard HEAD 'в каталоге, казалось, создало файлы.

.git/objects был довольно большим, поэтому, я думаю, файлы были импортированы из svn в git, они просто не были извлечены или что-то в этом роде.

Ответ 6

В моем случае операция клонирования не выполнялась должным образом. git svn clone не удалось пройти через проверку. Как только я исправил проблему, он автоматически выполнил проверку после операции клонирования - не более пустой папки.

[Обновление] Вот что сработало в моем случае:

Попытка git svn clone --preserve-empty-dirs <repo> не удалась для меня. После очистки сети я нашел https://www.semitwist.com/articles/article/view/the-better-svn-git-guide, в котором говорится, в частности:

Эта часть немного раздражает. Начиная с версии 1.7.7, Git имеет -preserve-empty-dirs. Проблема в том, что проклятая вещь сломана. Если вы попытаетесь использовать его как есть, вся операция, скорее всего, просто не пройдет частично. Он должен быть исправлен.

Сначала найдите файл git -svn:

$find/2 > /dev/null | grep git -svn

$find 2 > /dev/null/-type f | grep -l "Не удалось удалить"

Для меня это было в /usr/libexec/ git -core/git -svn.

Примечание. Его больше не в git -svn (по крайней мере, не в Git 2.7.0). Я нашел его в /usr/lib/perl5/vendor_perl/5.22/Git/SVN/Fetcher.pm.

Откройте целевой файл в вашем любимом редакторе:

sudo <your-favorite-editor> path/to/file

Теперь в этом git -svn файле найдите die "Failed to strip path. ([В зависимости от вашей версии git] он может быть где-то рядом с линией 4583. Измените die на print и сохраните. Теперь ваш git -svn исправлен.

git svn clone --preserve-empty-dirs <repo> должен теперь вести себя так, как ожидалось.

Ответ 7

Я не мог понять, работает ли это, но попробуйте:

git svn clone --stdlayout <url>/root/projectA/

Ответ 8

Если вы используете транспорты HTTP или HTTPS (т.е. ваши URL-адреса репозитория начинаются с HTTP [s]), вам необходимо указать действительное имя SVN.

git svn clone -s https://svn.example.com/root/projectA --username <SVN username>

-s - это псевдоним для -stdlayout

Однако мне нужно было только указать параметр --username один раз и последующие звонки без него. Я думаю, он кэширует имя пользователя.