git извлекает каталог из репозитория — отсутствует история фиксации до переименования

#git

#git

Вопрос:

Я хочу извлечь каталог из репозитория, включая всю историю его фиксации. Проблема, с которой я сталкиваюсь, заключается в том, что конечный результат не содержит истории фиксации до перемещения / переименования файлов (что было сделано в какой-то момент).

Пример:

  • Я хочу извлечь src /lib/features/TheLib из репозитория проекта.
  • Этот каталог ‘theLib’ в какой-то момент находился в другом месте, например ‘src / util /lib / TheLib’.
  • Основной репозиторий содержит полную историю изменений, внесенных в файлы, включая изменения до того, как библиотека была перемещена в новое место в репозитории.
  • Если я попытаюсь извлечь каталог в новый репозиторий, у меня будет только история фиксации с момента после того, как файлы были перемещены / переименованы.

Я пробовал это [0]:

 $ git filter-branch --prune-empty --subdirectory-filter src/lib/features/TheLib master
 

и это [1]:

 $ ./git-filter-repo --subdirectory-filter src/lib/features/TheLib
 

Оба инструмента дают мне одинаковые результаты. Это почти работает нормально, за исключением отсутствия истории фиксации до переименования.

[0] https://docs.github.com/en/free-pro-team@latest/github/using-git/splitting-a-subfolder-out-into-a-new-repository

[1] https://github.com/newren/git-filter-repo/blob/main/Documentation/converting-from-filter-branch.md#cheat-sheet-conversion-of-examples-from-the-filter-branch-manpage

Комментарии:

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