Страницы

Поиск по вопросам

суббота, 7 марта 2020 г.

Переезд с mercurial на git

#git #mercurial #migration #hg


Здравствуйте!
Есть большая проблема с переездом на git.
Почему-то переезжает только одна ветка, а их полно...
Использую TortoiseHg с плагином hggit. В hgrc меняю только path.
Прошу помочь в этом вопросе.
    


Ответы

Ответ 1



Для пингвина лучше сделать вот так: Есть инструмент hg-fast-export. Его можно найти здесь: git clone http://repo.or.cz/r/fast-export.git /tmp/fast-export Нужно получить mercurial репу: hg clone /tmp/hg-repo Далее нужно создать файл соответствия авторов. cd /tmp/hg-repo hg log | grep user: | sort | uniq | sed 's/user: *//' > ../authors В /tmp/authors будет примерно следующее содержимое: bob bob@localhost bob bob jones company com> Bob Jones Joe Smith В примере выше, один и тот же человек (Боб) вносил изменения под пятью различными именами, лишь одно из которых правильное, а одно и вовсе не соответствует формату Git. hg-fast-export позволяет быстро исправить ситуацию, добавив ={new name and email address} к каждой строке, которую мы хотим изменить; чтобы оставить имя как есть, просто удалите нужные строки. Если же все имена выглядят хорошо, этот файл и вовсе не потребуется. В нашем примере мы хотим чтобы данные выглядели так: bob=Bob Jones bob@localhost=Bob Jones bob jones company com>=Bob Jones 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 hg-repo git init converted git clone http://repo.or.cz/r/fast-export.git Отредактировать c:\projects\fast-export\hg-fast-export.py. Начало этого скрипта нужно заменить на такое: #!/usr/bin/env python # Copyright (c) 2007, 2008 Rocco Rutte and others. # License: MIT 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 Готово. Дальше можно заливать гит репу на сервер.

Комментариев нет:

Отправить комментарий