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 .
КРОКИ
1. Завантажте SubGit
2. Підготуйте команди міграції та оновлення.
Скажімо, ми робимо це для Windows (банально портувати до Linux).
У каталозі бін встановлення 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 . Я використовую лише --dede-домен 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.
Увага! Не торкайтеся голого сховища (наприклад, створення гілок).
Ви приймете наступну фатальну помилку:
Помилка, яку не можна знайти
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 ( марний для мене ). Або ви можете створити гілки з усіх тегів і натиснути їх. Або, або, або ...