Как мне преобразовать репозиторий git в mercurial?


104

Я разрабатывал Java-приложение, используя git в качестве репозитория исходного кода. Я хотел бы поделиться проектом с другими разработчиками java, и, похоже, они наиболее часто используют hg.

У меня вопрос, как преобразовать репозиторий git в hg?

Если бы я попробовал погуглить "convert git to hg", и каждый поисковый запрос был посвящен преобразованию из hg в git. Я тоже использую TortoiseHg .


16
Если вместо этого вам нужно преобразовать mercurial в git: stackoverflow.com/questions/883452/…
Christian Oudard

Последний абзац не имеет смысла. Опечатка?
tshepang

1
@Tshepang: Я хотел "git -> hg", но получил "hg -> git". Я отредактирую этот вопрос, но я думаю, что люди все равно его поняли, поскольку сейчас есть ответы.
Spoike

Ответы:


79

После установки hg convertутилита по умолчанию отключена. Чтобы установить это как таковое, добавьте в свой .hgrcфайл следующее.

[extensions]
hgext.convert=

Если вы используете TortoiseHg в Windows, этот файл находится в вашем домашнем каталоге как mercurial.ini. После изменения этого параметра вы сможете пользоваться hg convertутилитой.


5
В Ubuntu общесистемные изменения могут быть сделаны в / etc / mercurial / hgrc
Sentient

1
В Windows, используя TortoiseHg, его можно включить с помощью пункта меню «Глобальные параметры» в меню расширения оболочки TortoiseHg в разделе «Расширения» в разделе «Глобальные параметры».
Умар Фарук Хаваджа

Описание несколько неполное, поскольку не указывает, что hg потребуется доступ к git для преобразования, иначе вы получите сообщение об ошибке «не удается найти требуемый инструмент».
jmd

41

Используя расширение Mercurial Convert

Добавьте следующие строки в ваш .hgrcили, чтобы включить расширение:

[extensions]
hgext.convert=

И набрав

cd src
hg convert --datesort . dst

(даже если это может привести к некоторым проблемам ...)

Примечание :: metrix сообщает, что это может не сработать:

     hg convert --datesort src dst

Примечание:hg convert если вы выполняете эту команду из каталога, отличного от исходного, возникает ошибка .
Вы получите следующую ошибку:

abort: cannot read tags from git-repo4/.git

Подтверждено с помощью git 1.7.9 и Mercurial 2.6.2 в Windows XP


Если бы этот ответ включал .hgrcнастройку вместо ссылки на нее, он был бы исчерпывающим.
fbmd

17

Вы можете посмотреть утилиту http://hg-git.github.com/ : плагин Git для Mercurial

Этот плагин изначально был разработан ребятами из GitHub и позволяет конвертировать из git <-> mercurial без потерь. Теоретически вы даже можете клонировать репозиторий hg.


2
Это лучшее решение, чем преобразование репозитория. Было бы лучше, если бы в нем было больше деталей. Однострочные ответы почти бесполезны.
naught101

1
@ naught101, спасибо за предложение, я добавил сюда дополнительную информацию, чтобы прочитать ее напрямую.
vdboor

после установки и настройки hg-git используйте hg gexport и hg gimport для преобразования между ними.
CAD парень


6

Расширение convert может сработать для вас, но если это не так, вы можете проверить tailor, который является универсальным инструментом для преобразования между различными распределенными SCM.



2

Новый игрок в городе: git-remote-hg . Он обеспечивает встроенную поддержку моста в git.

Просто:

hg init ../hgrepo
git push hg::$PWD/../hgrepo

1

В Gitпапке со всеми моими репозиториями Git я создал Git2Hg.cmdфайл со следующим содержимым:

set PATH=%PATH%;C:\Program Files\TortoiseHg
set PATH=%PATH%;C:\Program Files\Git\bin
hg convert %1

Теперь я могу преобразовать репозиторий Git в Hg, набрав это в CMD:

Git2Hg "Folder Name"

0

Плагин Hg-Git или, если вы используете для Windows или миграцию с одного на другой, посетите здесь 2 [Windows GIT]

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.