Создайте новый репо из подпапки в Mercurial Repo, используя convert - PullRequest
12 голосов
/ 27 июля 2011

Я пытаюсь извлечь папку (назовите ее Project1 ) из существующего Mercurial Repo (позвоните в MainRepo ), используя расширение Convert для преобразования Mercurial в Mercurial. Я следовал методам, описанным разработчиками 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 Ответ

7 голосов
/ 27 июля 2011

Рабочий процесс, который вы перечислили, является правильным.Вот как расширение convert предназначено для работы.

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

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

Указанное имя каталогав вашем операторе include должен быть указан полный путь от корня хранилища.Например, ваш оператор включения:

include Project1

требует, чтобы путь к Project1 действительно был:

C:\MainRepo\Project1

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

...