Как преобразовать мой репозиторий Git в Mercurial и вывести его теги
Я хочу немного поиграть с Mercurial, поэтому я пытаюсь преобразовать один из моих существующих репозиториев. Я запустил следующую команду на своем Mac:
hg convert myrepos myrepos-hg
Команда успешно импортирует все мои коммиты, но она не выводит по 8 или около того теги, которые были помечены в репозитории Git (и ни одна из ветвей не имеет значения). Есть ли специальный параметр, который мне нужно настроить для импорта моих тегов в Mercurial?
Ответы
Ответ 1
Являются ли ваши теги легкими git тегами или заполнены аннотированными тегами? hg convert
только преобразует аннотированные теги, но git по умолчанию создает легкие. У меня была эта проблема при конвертации одного из моих репозиториев в последнее время. Вы можете проверить, что они таковы:
git ls-remote --tags .
Запуск hg convert
будет преобразовывать теги, заканчивающиеся на ^{}
, аннотированные. У вас есть 2 варианта:
- исправить файл расширения git.py hgext для преобразования всех типов
- измените теги git на аннотированные теги перед конверсией
С небольшой оболочкой script и параметром -force до git -tag вы можете аннотировать все ваши теги.
Ответ 2
Это несколько известная проблема. Вы можете попробовать исправить следующий файл /usr/lib/python 2.6/site-packages/hgext/convert/hg.py(или где бы он ни находился), изменив это:
extra = {'branch': self.tagsbranch}
в
extra = {'branch': 'default'}
а затем снова преобразует его.
РЕДАКТИРОВАТЬ: При более глубоком взгляде на состояние вещей кажется, что может быть сложно - не невозможно - делать то, что вы хотите. Тем более, чтобы сделать это правильно.
Так как у вас есть только 8 тегов, подумайте о том, чтобы сэкономить на себе трудность, создав файл .hgtags вручную. Вы можете понять, что происходит с "hg convert" позже (я тоже буду держать глаза в тени).
Luck.
Ответ 3
Одно из предложений, которое я видел в прошлом, - использовать svn в качестве промежуточного шага. Оба git и hg имеют превосходное двунаправленное преобразование svn.
Ответ 4
Проверьте hg- git плагин.