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

104

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

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

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

Spoike
источник
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утилитой.

Spoike
источник
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

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

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

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

vdboor
источник
2
Это лучшее решение, чем преобразование репозитория. Было бы лучше, если бы в нем было больше деталей. Однострочные ответы почти бесполезны.
naught101
1
@ naught101, спасибо за предложение, я добавил сюда дополнительную информацию, чтобы прочитать ее напрямую.
vdboor
после установки и настройки hg-git используйте hg gexport и hg gimport для преобразования между ними.
CAD парень
9

Распределенный контроль версий с Mercurial состояниями:

Инструменты управления версиями, поддерживаемые convert, следующие:

  • Subversion
  • CVS
  • Git
  • Darcs

Так, может быть, вам не нужен дополнительный инструмент?

Бомба
источник
1
К сожалению, "hg convert" недоступен в tortoisehg
Spoike
6

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

Люк Франкл
источник
2

Вы просто не могли его преобразовать. Просто используйте плагин Hg-Git ! Никто не узнает разницы.

Джей Аткинсон
источник
2

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

Просто:

hg init ../hgrepo
git push hg::$PWD/../hgrepo
FelipeC
источник
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]

Дилшад
источник