Как мне преобразовать мой Git-репозиторий в Mercurial и взять с собой его теги - PullRequest
10 голосов
/ 18 июля 2009

Я хочу немного поиграть с Mercurial, поэтому я пытаюсь преобразовать один из моих существующих репозиториев. Я запускаю следующую команду на моем Mac:

hg convert myrepos myrepos-hg

Команда успешно импортирует все мои коммиты, но не содержит 8 или около того тегов, которые были отмечены в репозитории Git (ни одна из веток в этом отношении). Есть ли специальный параметр, который мне нужно установить, чтобы мои теги также импортировались в Mercurial?

Ответы [ 4 ]

6 голосов
/ 19 июля 2009

Являются ли ваши теги легковесными тегами git или заполнены аннотированными тегами? hg convert конвертирует только аннотированные теги, но git по умолчанию создает легкие теги. У меня была эта проблема при конвертации одного из моих репозиториев недавно. Вы можете проверить, что они из себя представляют:

git ls-remote --tags .

Запуск hg convert преобразует только те теги, которые заканчиваются на ^{}, аннотированные. У вас есть 2 варианта:

  • исправьте файл расширения git.py hgext convert для преобразования всех типов
  • измените ваши теги git на аннотированные теги до преобразования

С помощью небольшого сценария оболочки и опции --force для git-tag вы можете аннотировать все ваши теги.

3 голосов
/ 18 июля 2009

Это несколько известная проблема. Вы можете попробовать исправить следующий файл /usr/lib/python2.6/site-packages/hgext/convert/hg.py (или где бы он ни находился), изменив это:

extra = {'branch': self.tagsbranch}

до:

extra = {'branch': 'default'}

, а затем снова преобразовать его.

РЕДАКТИРОВАТЬ: При более глубоком взгляде на положение вещей кажется, что это может быть трудно - это не невозможно - делать то, что вы хотите. Тем более, чтобы сделать это правильно.

Поскольку у вас есть только 8 тегов, подумайте над тем, чтобы избавить себя от хлопот, создав вручную файл .hgtags. Вы можете выяснить, что случилось с 'hg convert' позже (я тоже буду держать глаза пьяными).

Удача.

1 голос
/ 18 июля 2009

Проверьте плагин hg-git .

1 голос
/ 18 июля 2009

Одно предложение, которое я видел в прошлом, это использовать svn в качестве промежуточного шага. У git и hg отличное двунаправленное преобразование SVN.

...