Подтвердить что ты не робот

Создайте новое репо из подпапки в 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 с неповрежденной и завершенной только записью вложенной папки в новый репо и одновременно передать исходные файлы? (хотя я думаю, что прямая копия сделает последнее). Он сохраняет историю, которая важна. В этом случае я могу сделать это после даты или номера набора изменений.

Любая помощь очень ценится, поскольку я относительно новичок в этом

Спасибо

4b9b3361

Ответ 1

Указанный вами рабочий процесс верен. Именно так должно работать расширение convert.

В вашем вопросе указывается, что вывод репо hg convert фактически пуст (кроме "самой первой записи истории для MainRepo и элемента Convert" ). Это означало бы, что convert не смог найти путь, указанный в вашей файловой карте.

Вы уверены, что путь, заданный вашим оператором include, правильный?

Имя каталога, указанное в инструкции include, должно быть полным путем из вашего корня репозитория. Например, ваш оператор include:

include Project1

требует, чтобы путь к Project1 фактически был:

C:\MainRepo\Project1

Если Project1 фактически находится где-то еще в MainRepo, после преобразования вы получите пустое репо.