Объедините несколько подпунктов в один и сохраните историю в Mercurial - PullRequest
11 голосов
/ 07 октября 2010

В настоящее время у меня есть проект, состоящий из нескольких репозиториев, например ::

+---<b>Project</b> <i>(main repo)</i>
    +---<b>Core</b> <i>(subrepo)</i>
    +---<b>Web</b> <i>(subrepo)</i>
    \---<b>Tests</b> <i>(subrepo)</i>

К сожалению, код между подпунктами достаточно связан, поэтому он плохо работает с ветвями.

Есть ли способ объединить подпункты в один основной репозиторий, сохраняющий историю?

Ответы [ 3 ]

8 голосов
/ 07 октября 2010

Я бы начал с использования hg convert с файловой картой, которая исключает .hgsub и подпункты. Затем используйте hg convert для вложенных элементов с переименованными записями в карте файла, например: rename . Core

Как только у вас появятся эти новые репо, вы можете использовать hg pull -f для импорта наборов изменений из преобразованных вложенных репозиториев в преобразованный основной репо по одному. Вам также нужно будет объединить их с вашим новым основным репо (они образуют отдельные головы с нулевой ревизией в качестве последнего общего предка).

3 голосов
/ 07 октября 2010

Первое предположение: Возможно, используя расширение convert с файловой картой?

Еще одна попытка:

  • Потяните все свои репо в одно и то же, у вас будут разные головы для ветки "по умолчанию"
  • Тогда для каждой головы
    • Обновление этой головы
    • Переместить файлы (hg move) в правильный каталог
  • Объединить все головы по умолчанию

Редактировать: добавлено больше деталей и еще одна попытка

0 голосов
/ 07 октября 2010

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

  1. Убедитесь, что у каждого корневого каталога репо есть главный каталог, названный в честь имени репо.
  2. пуш каждого репо в главном репо.
...