Здравствуйте! Есть большая проблема с переездом на git. Почему-то переезжает только одна ветка, а их полно... Использую TortoiseHg с плагином hggit. В hgrc меняю только path. Прошу помочь в этом вопросе.
Ответ
Для пингвина лучше сделать вот так:
Есть инструмент hg-fast-export
Его можно найти здесь:
git clone http://repo.or.cz/r/fast-export.git /tmp/fast-export
Нужно получить mercurial репу:
hg clone
Далее нужно создать файл соответствия авторов.
cd /tmp/hg-repo
hg log | grep user: | sort | uniq | sed 's/user: *//' > ../authors
В /tmp/authors будет примерно следующее содержимое:
bob
bob@localhost
bob
В примере выше, один и тот же человек (Боб) вносил изменения под пятью различными именами, лишь одно из которых правильное, а одно и вовсе не соответствует формату Git. hg-fast-export позволяет быстро исправить ситуацию, добавив ={new name and email address} к каждой строке, которую мы хотим изменить; чтобы оставить имя как есть, просто удалите нужные строки. Если же все имена выглядят хорошо, этот файл и вовсе не потребуется. В нашем примере мы хотим чтобы данные выглядели так:
bob=Bob Jones
Затем нужно создать Git репозиторий и запустить экспорт:
git init /tmp/converted
cd /tmp/converted
/tmp/fast-export/hg-fast-export.sh -r /tmp/hg-repo -A /tmp/authors
Флаг -r указывает на подлежащий конвертации Mercurial репозиторий, а флаг -A задаёт файл с соответствиями между авторами. Скрипт пробегается по наборам изменений Mercurial и преобразует их в скрипт для fast-import в Git.
И отправляем изменение в репу гита:
git remote add origin git@my-git-server:myrepository.git
git push origin --all
Для винды почти так же только немного другие команды:
cd c:\projects
hg clone
Отредактировать c:\projects\fast-export\hg-fast-export.py. Начало этого скрипта нужно заменить на такое:
#!/usr/bin/env python
# Copyright (c) 2007, 2008 Rocco Rutte
import sys
# import mercurial libraries from zip:
sys.path.append(r'C:\Program Files (x86)\Mercurial\library.zip')
from mercurial import node
from hg2git import setup_repo, fixup_user, get_branch, get_changeset
from hg2git import load_cache, save_cache, get_git_sha1, set_default_branch, set_origin_name
from optparse import OptionParser
import re
import os
Скопировать fast-export в converted игнорируя .git папку.
Далее: cd converted и создайте тут файл authors.txt по аналогии из linux версии.
И hg-fast-export.sh -r c:\projects\hg-repo -A authors.txt
Готово. Дальше можно заливать гит репу на сервер.
Комментариев нет:
Отправить комментарий