SubGit (против Синего экрана смерти)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Это все.
+ Для обновления из SVN, Git-репозиторий, созданный первой командой.
subgit import directory/path/Local.git.Repo
Я использовал способ мгновенной миграции на Git для огромного хранилища.
Конечно, вам нужна подготовка.
Но вы можете вообще не останавливать процесс разработки.
Вот мой путь.
Мое решение выглядит так:
- Перенос SVN в хранилище Git
- Обновите Git-репозиторий непосредственно перед переключением команды на .
Миграция занимает много времени для большого хранилища SVN.
Но обновление завершенной миграции всего за несколько секунд.
Конечно, я использую SubGit , мама.
Git-SVN делает меня Синий экран смерти . Просто постоянно.
И git-svn надоел мне фатальной ошибкой Git " filename too long ".
ШАГИ
1. Скачать SubGit
2. Подготовка команд переноса и обновления.
Допустим, мы делаем это для Windows (портирование на Linux тривиально).
В каталоге установки SubGit bin (subgit-2.X.X \ bin) создайте два файла .bat.
Содержимое файла / команды для миграции:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Команда «пуск» здесь необязательна (Windows). Это позволит увидеть ошибки при запуске и оставить оболочку открытой после завершения SubGit.
Вы можете добавить сюда дополнительные параметры, аналогичные git-svn .
Я использую только - домен по умолчанию myCompanyDomain.com , чтобы исправить домен адреса электронной почты авторов SVN.
У меня есть стандартная структура репозитория SVN (ствол / ветви / теги), и у нас не было проблем с «отображением авторов». Так что я больше ничего не делаю.
(Если вы хотите перенести теги, такие как ветви, или ваш SVN имеет несколько папок веток / тегов, вы можете использовать более подробный SubGit подход )
Совет 1 : Используйте --minimal-revision YourSvnRevNumber, чтобы быстро увидеть, как все происходит (какая-то отладка).
Особенно полезно видеть разрешенные имена авторов или электронные письма.
Или ограничить глубину истории миграции.
Совет 2 : Миграция может быть прервана ( Ctrl + C ) и восстановлена путем запуска следующей команды / файла обновления.
Я не советую делать это для больших репозиториев. Я получил "Недостаточно памяти Java + Windows исключение".
Совет 3 : Лучше создать копию вашего репозитория результатов поиска.
Содержимое файла / команды для обновления:
start subgit import directory/path/Local.git.Repo
Вы можете запускать его любое количество раз, когда хотите получить последние коммиты команды в свой репозиторий Git.
Внимание! Не прикасайтесь к своему голому репозиторию (например, создание веток).
Вы получите следующую фатальную ошибку:
Неустранимая ошибка: не синхронизированы и не могут быть синхронизированы ... Перевод версий Subversion в коммиты Git ...
3. Запустить первую команду / файл. Это займет много времени для большого хранилища. 30 часов для моего скромного хранилища.
Это все.
Вы можете в любое время обновить Git-репозиторий из SVN любое количество раз, запустив второй файл / команду. И до перехода вашей команды разработчиков на Git.
Это займет всего несколько секунд.
Есть еще одна полезная задача.
Перенесите ваш локальный репозиторий Git в удаленный репозиторий Git
Это твой случай? Давайте продолжим.
- Настройка пультов
Пробег:
$ git remote add origin url://your/repo.git
- Подготовка к первоначальной отправке вашего огромного локального репозитория Git в удаленный репозиторий
По умолчанию ваш Git не может отправлять большие куски.
смертельно: удаленный конец неожиданно зависает
Давай побежим за этим:
git config --global http.postBuffer 1073741824
524288000 - 500 МБ1073741824 - 1 ГБ и т. Д.
Исправьте локальные проблемы с сертификатом . Если ваш git-сервер использует испорченный сертификат.
Я отключил сертификаты .
Кроме того, ваш Git-сервер может иметь ограничения количества запросов, которые необходимо исправить .
- Отправка всей миграции в удаленный Git-репозиторий команды.
Запуск с локальным Git:
git push origin --mirror
( git push origin '*: *' для старых версий Git)
Если вы получаете следующее: ошибка: невозможно создать git: нет такого файла или каталога ... Для меня полное восстановление моего хранилища решает эту ошибку (30 часов). Вы можете попробовать следующие команды
git push origin --all
git push origin --tags
Или попробуйте переустановить Git ( для меня бесполезно ).
Или вы можете создавать ветви из всех своих тегов и нажимать их. Или, или, или ...