Миграция из Mercurial в GIT

 

     На работе мы используем достаточно экзотическую version control systemVault. Лично я не особо привык к работе с ней, поэтому использую Mercurial, которого мне хватает с головой. Вернее, хватало — желание попробовать новое никуда не девается =) К тому же, вокруг рассказывают, что GIT намного лучше. Для работы решил перевести (возможно временно) мои проекты на git — благо, техника работы примерно одинаковая. Как оказалось, процусс миграции на git под windows не так очевиден, как хотелось бы. Поэтому решил написать короткое How-To для вас и для себя, чтобы не забыть. 

      Итак,

      Для переноса проека в git существует готовый скрипт, который хорошо работает — под linux. Под windows он работает криво, а изначально вообще не работает. Вот процесс работы:

1) Так как mercurial и скрипт написан на Python, устанавливаем последний. Версия — 2.6.6 

http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi

2) Устанавливаем pywin — 
http://hivelocity.dl.sourceforge.net/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe

3) Устанавливаем mercurial.  Не в составе tortoise HG, а именно голый — http://cdn.bitbucket.org/tortoisehg/thg-winbuild/downloads/mercurial-2.1.1.win32-py2.6.exe

4) Проверьте пути, питон должен работать из командной строки.

5) Устанавливаем git. Обратите внимание, там есть опция — что делать с символами перевода строки. Выбираем «As Is» http://msysgit.googlecode.com/files/Git-1.7.10-preview20120409.exe

6) Считаем, что все далаем на рабочем столе =) Качаем скрипт для переноса:

   cd ~/Desktop
   git clone git://repo.or.cz/fast-export.git

7) Исправляем досадную засаду со скриптом для переноса. Под windows он работает неверно. Поэтому открываем и редактируем файл hg-fast-export.py

   Вносим в начало после комментариев —

import sys

if sys.platform == «win32»:
   import os, msvcrt
   msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

8) Инициируем новый репозиторий для сорцов — git init git_repo

9) Переходим — cd git_repo

10) Переносим проект со старого места в новый — ~/Desktop/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo

11) Если все нормально — чекаут, мы молодцы — все получилось =) git checkout HEAD

 

      В следующий раз напишу о Git клиенте, который использую. Он не без глюков, но вполне функционален.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *