2017-02-14 27 views
0

I использовать svn в большом проекте. Я могу проверить багаж проекта без каких-либо проблем. Это занимает от 30 минут до 1 часа. Я делаю это вот так:git svn берет навсегда, svn принимает час

svn checkout https://myrepo.com:port/svn/trunk/ 

но если я попытаюсь использовать git, это займет навсегда. Я делал git svn fetch, как через два дня после получения ошибок, выполняющих кассу, когда я читал в некоторых ответах на подобные вопросы, но ничего. Команда, которую я использую

git svn clone https://myrepo.com:port/svn/trunk/ 

вопрос (я думаю), что мерзавец пытается клонировать ВСЕ (все филиалы) плюс другие вещи, которые я не хочу. В каталоге svn есть сундук и ветви, но и другие каталоги, которые мне не нужны. Я хочу только ствол.

Это нормальное поведение?

ответ

2

С вашей командой он только клонирует багажник, поскольку вы указали URL-адрес соединительной линии. Но он все еще клонирует всю свою историю, получая все ревизии один за другим, а затем делает из этого Git. Это требует возраста, особенно если вы не делаете этого на сервере, где репозиторий SVN находится в файловой системе. Это одна из многих причин, по которым я не рекомендую использовать инструменты git-svn или git-svn для одноразовых миграций.

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

+0

'git svn init' также знает о параметре командной строки' --ignore-paths', который может помочь. – kostix

1

git svn clone значительно медленнее, главным образом потому, что это не голый репозиторий.

Примечание. Не забудьте создать файл авторов для переноса.

Эти дополнительные шаги ускорит процесс Svn → мерзавца миграции:

  1. git svn clone https://myrepo.com:port/svn/ --stdlayout <deleteMe.git> со всеми дополнительными параметрами, как --ignore-paths и что нет.
  2. Затем отмените операцию git svn clone на шаге 1, только ради использования файла .git/config.
  3. git init --bare <useMe.git>
  4. Заменить <useMe.git>/config из с <deleteMe.git>.git/config с шага 1. (так как она является голой репо)
  5. Edit <useMe.git>/config изменить bare = falsebare = true
  6. cd <useMe.git>
  7. Теперь, git svn fetch и обратите внимание на улучшенная скорость.
  8. Когда выборка делается, либо мерзавец клон его с git clone <useMe.git> <newNonBare.git>
  9. Или добавить мерзавца пульт дистанционного управления для <useMe.git> и нажать на него, скажем, на локальном проекте GitLab сервера.

Примечание: Для достижения наилучшего git svn clone/fetch скорости, скопируйте репозиторий SVN локально и Svnserve это то git svn clone от него.Но этот метод требует использования этого параметра --rewrite-root, поэтому ваш клонированный git-репозиторий поддерживает исходный URL-адрес svn в комментарии.

Надеюсь, что это поможет.