Как я могу импортировать ртутное репо (включая историю) в другое ртутное репо в качестве подкаталога, не используя подпункты? - PullRequest
41 голосов
/ 09 июля 2010

Звучит довольно сложно, поэтому позвольте мне объяснить:

Project_A некоторое время жил в своем собственном хранилище Mercurial. Project_A теперь превращается в новый супер-проект, Super-Project_B. Super-Project_B также имеет ртутный репозиторий. Мы бы предпочли, чтобы Project_A был не подпунктом, а обычным ребенком, но мы также не хотим терять историю. Есть ли способ сделать это?

1 Ответ

50 голосов
/ 09 июля 2010

Да. Используйте расширение convert для перемещения projectA вниз на один уровень каталога:

hg convert --filemap filemap.txt projectA projectA-redone

, где ваш filemap.txt содержит эту строку:

rename . projectA

(эта точка может быть косой чертой, но я так не думаю).

Это даст вам новый репозиторий, projectA-redone, который имеет всю историю A, хотя все наборы изменений будут иметь разные хэши, так как их содержимое (пути) изменилось, чтобы получить «projectA» перед всеми ними.

Затем вы идете в Super-Project_B и делаете hg pull -f /path/to/projectA-redone. Вам нужен -f, потому что в противном случае вам скажут, что репозитории не связаны, поскольку у них нет общих наборов изменений.

Наконец, вы сделаете hg merge в Super_project_b, который не должен иметь конфликтов (если только у вас не было каталога projectA, в этом случае вы должны были выбрать другое имя или hg remove сначала его). *

После этого у B будет все A внутри подкаталога projectA, и вся история останется нетронутой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...