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 « слишком длинное имя файла ».
ШАГОВ
1. Скачать SubGit
2. Подготовьте команды переноса и обновления.
Допустим, мы делаем это для Windows (портирование на Linux тривиально).
В каталоге bin установки SubGit (subgit-2.XX \ bin) создайте два файла .bat.
Содержимое файла / команды для миграции:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Команда «пуск» здесь необязательна (Windows). Это позволит увидеть ошибки при запуске и оставить оболочку открытой после завершения SubGit.
Вы можете добавить сюда дополнительные параметры, аналогичные git-svn . Я использую только --default-domain 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)
Если вы получаете следующее: error: not not spit git: Нет такого файла или каталога ... Для меня полное воссоздание моего хранилища решает эту ошибку (30 часов). Вы можете попробовать следующие команды
git push origin --all
git push origin --tags
Или попробуйте переустановить Git ( для меня бесполезно ). Или вы можете создавать ветви из всех ваших тегов и нажимать их. Или, или, или ...