Я только что столкнулся с той же проблемой и не смог получить полную историю перемещенной папки, даже с индексным фильтром.
Мой обходной путь - сделать отдельный экспорт subdir папки (ABC), которая была перемещена в точку до ее перемещения, и затем перенести историю этого хранилища в новый.
Допустим, ABC раньше назывался MNO. Я клонирую MyMainRepo, возвращаюсь к версии, когда MNO еще существовал (до того, как он был переименован в ABC). Я делаю ответвление фильтра с помощью subdir, чтобы получить хранилище с именем "MNO".
Внутри ABC я делаю git fetch ../MNO
.
Затем я ввожу коммит, когда содержимое было перемещено в ABC (это будет первый коммит с содержимым в репо ABC), плюс последний коммит в репозитории MNO в .git/grafts
.
Теперь я могу сделать git log для файлов внутри ABC и увидеть историю, прослеживающую весь путь, как это было в MNO. Следующий шаг - сделать еще одну ветку фильтра, чтобы сделать ее постоянной прививкой и т. Д. Я сделал скринкаст, который демонстрирует прививку здесь (хотя контекст немного отличается):
http://blog.tfnico.com/2010/10/gitsvn-6-grafting-together-svn-history.html
Обратите внимание, что это должно быть сделано для каждой перемещаемой папки, это большая работа, и в итоге вы получаете коммит слияния для каждого случая. Но git log работает.
Я пишу это немного спешно, но если кому-то интересно попробовать этот подход, дайте мне знать, и я постараюсь немного прояснить его и показать несколько более конкретных примеров.