Создайте новое репо из подпапки в Mercurial Repo, используя convert
Я пытаюсь извлечь папку (назовите ее Project1) из существующего Mercurial Repo (вызов MainRepo) с помощью расширения Convert для Mercurial to Mercurial conversion. Я следил за методами, описанными разработчиками Mercurial (и в других местах в Интернете) под Windows XP:
C:\MainRepo>echo include Project1 > ~myfilemap
C:\MainRepo>echo rename Project1 . >> ~myfilemap
C:\MainRepo>hg convert --filemap ~myfilemap . C:\Project1Repo
C:\MainRepo>cd \Project1Repo
C:\Project1Repo>hg update
Это создает новое репо (Project1Repo) с папкой/файлами Mercurial на месте.
Но это не так:
1) Проведите по истории, связанной с изменениями, внесенными для проекта в папку Project1. (Присутствует только первая запись истории для MainRepo и элемента Convert).
2) Скопируйте все файлы исходного кода из MainRepo\Project1 в Project1Repo.
Я видел другие подобные вопросы и ответы в stackoverflow, но они, похоже, не помогают (я следил за рассмотренными в них методами):
Можно ли клонировать часть хранилища Mercurial?
Итак, вопрос в следующем: Как извлечь подпапку из MainRepo с неповрежденной и завершенной только записью вложенной папки в новый репо и одновременно передать исходные файлы? (хотя я думаю, что прямая копия сделает последнее). Он сохраняет историю, которая важна. В этом случае я могу сделать это после даты или номера набора изменений.
Любая помощь очень ценится, поскольку я относительно новичок в этом
Спасибо
Ответы
Ответ 1
Указанный вами рабочий процесс верен. Именно так должно работать расширение convert
.
В вашем вопросе указывается, что вывод репо hg convert
фактически пуст (кроме "самой первой записи истории для MainRepo и элемента Convert" ). Это означало бы, что convert
не смог найти путь, указанный в вашей файловой карте.
Вы уверены, что путь, заданный вашим оператором include
, правильный?
Имя каталога, указанное в инструкции include
, должно быть полным путем из вашего корня репозитория. Например, ваш оператор include:
include Project1
требует, чтобы путь к Project1 фактически был:
C:\MainRepo\Project1
Если Project1
фактически находится где-то еще в MainRepo
, после преобразования вы получите пустое репо.