Преобразуйте ртутный репозиторий в подкаталоги с полной историей (например, hg log -f)

Недавно я переместил некоторые файлы из своего ртутного репозитория в подкаталог (как модуль), чтобы сохранить все в порядке. Несколько дней спустя я узнал, что мне нужен этот модуль в другом проекте, поэтому я пытаюсь преобразовать его в свой собственный ртутный репозиторий.

Проблема, с которой я сталкиваюсь, заключается в том, что новая история хранилища не завершена, она включает в себя только историю файлов после переименования. История, которую я получаю, такая же, как выполнение hg log filenameи что я хочу иметь полную историю файла, например, вывод hg log -f filename,

Что мне не хватает?

Благодарю.

1 ответ

Я предполагаю, что у вас было что-то вроде этой структуры:

main.c
lib1.c
lib2.c

Вы переименовали файлы и получили что-то вроде этого:

main.c
lib/lib1.c
lib/lib2.c

Теперь вы хотите что-то вроде этого, как вы lib репозиторий:

lib1.c
lib2.c

Я предполагаю, что эта последняя часть, потому что, когда вы включаете его в качестве суб-репозитория, он будет выглядеть так же, как ваш исходный репозиторий после переименования.

Я бы сделал это в несколько этапов.

Первым этапом будет сделать то, что вы, вероятно, уже сделали. Преобразуйте репозиторий с помощью командной строки hg convert --filemap LibTempMap.txt Main LibTemp и следующее содержание LibTempMap.txt:

exclude *
include lib
rename lib .

Это дает вам хранилище с историей после переименования.

Вторым этапом будет преобразование хранилища перед переименованием с помощью командной строки. hg convert --rev X --filemap LibMap.txt Main Lib (где X - ревизия до переименования) и следующее содержимое LibMap.txt:

exclude *
include lib1.c
include lib2.c

Это дает вам хранилище с историей до переименования.

Я бы затем пересадить последующие изменения от LibTemp в Lib с помощью hg transplant -s ..\LibTemp Y:tip изнутри Lib папка (где Y это ревизия после переименования в LibTemp хранилище). Это должно произойти аккуратно, поскольку вы убедились, что файловые структуры были одинаковыми во временном хранилище, выполнив переименование во время преобразования.

Вы тогда остались с Lib хранилище, содержащее историю и файлы, которые вы хотите и можете удалить LibTemp репозиторий.

Другие вопросы по тегам