#mercurial
#mercurial
Вопрос:
У меня есть куча файлов, на самом деле это проект на C # и связанные с ним файлы, весь репозиторий hg — это решение для многих проектов. Мне нужно переместить их (с историей) в другой существующий репозиторий.
Каков наилучший способ сделать это?
Комментарии:
1. Мой совет: не делайте этого. Слияние истории несвязанных проектов чрезвычайно сложно сделать правильно: это означает воспроизведение истории одного проекта внутри другого. Различные хаки, которые предлагают люди, не сделают этого и приведут к запутанной истории. Вот пример того, как я недавно справился с этим в самом проекте Mercurial: selenic.com/hg/rev/cfccd3bee7b3
Ответ №1:
Допустим, у вас есть репозитории A и B. Ваша цель — извлечь папку «a» в A и объединить ее с B, чтобы создать B_with_a, сохраняя при этом истории.
1) Извлеките ‘a’ в A и создайте Aa. Вы можете сделать это с помощью hg convert:
~$ hg convert A Aa --filemap list.txt
где list.txt есть
include a
2) Переместите Aa в B — чтобы сделать B_with_a_yet_merged . Вы должны использовать -f, поскольку они не связаны.
~/B$ hg pull ./../Aa -f
3) Объединить две ветви в B_with_a_yet_merged, чтобы сделать B_with_a
~/B$ hg merge (with the last rev in Aa)
PS. Не забудьте сделать резервную копию A и B заранее! Когда я впервые это сделал, я трижды перепутал репозитории.
Комментарии:
1. Недавно я использовал Git recipe для переноса одной папки в другое хранилище с историей, и это было отличное упражнение. Мне было интересно, есть ли у Mercurial такие вещи, и не только у него, но это проще (как всегда). Спасибо!
Ответ №2:
После того, как я покопался в командах hg, я нашел bundle, похоже, сделал трюк. Более подробная информация скоро
Обновление: попробовал это и не сработало. Он принес файлы, когда я разделил его, и я смог объединить, но по какой-то причине график был отключен. Я просто подумал, что отправлю сообщение для полноты
Комментарии:
1. Bundle эквивалентно push / pull .