Почему git svn show-ignore / show-externals так медленно работает?
Я пишу универсальный сценарий миграции svn ->
git, который позволяет намного больше, чем стандартный git svn clone
, и на одном этапе моего сценария я проверяю выходные данные git svn show-externals
и git svn show-ignore
для каждой ветви в мигрирующем репозитории и предпринимаю различные шаги в зависимости от выходных данных этих команд.
Моя проблема сейчас заключается в том, что в то время как остальная часть моего сценария выполняется довольно быстро, эти две команды, в частности, похоже, занимают подавляющее большинство мое рабочее время. В некоторых случаях запуск git svn show-externals
занимает более 10 минут (для РЕПО, содержащего около 5000 файлов). Когда вы работаете в репозитории такого размера с 10 или более ветвями, вы можете себе представить, что это значительно увеличивается.
1 ответ:
"git svn show-ignore" выполняет дополнительный запрос SVN для каждого каталога.
Для целей миграции, возможно, вы захотите взглянуть на инструмент SubGit. Он переводит svn: игнорировать -> .gitignore для каждой ревизии (а также переводит svn:EOL-стиль, теги и так далее). Единственное ограничение: требуется локальный доступ SVN к репозиторию. Таким образом, он может использоваться в сочетании с инструментом svnrdump. Если у вас есть хранилище SVN локально, миграция выполняется в одном Шаг:
$ subgit install path/to/svn/repo