Преобразуйте ртутный репозиторий в подкаталоги с полной историей (например, 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
репозиторий.