Объедините несколько подпунктов в один и сохраните историю в Mercurial

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

+ ---Проект (основной репо)
    + ---Core (subrepo)
    + ---Веб (подпункт)
    \ ---Тесты (подпункт)

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

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

3 ответа

Решение

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

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

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

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

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

Изменить: добавлено больше деталей и еще одна попытка

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

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