Я хакиваю репозиторий git на низком уровне, пытаясь извлечь из него историю файла. И возникают трудности с определением файла, измененного и переименованного в той же ревизии.
Я занимаюсь разработкой приложения на C # и мне нужно реализовать функцию git log --follow FILENAME
.
Модификация проста: поиск файла с заданным путем в деревьях, прикрепленных к ревизии, если SHA1 отличается - Вуаля !
Переименовать тоже просто: если поиск по заданному пути не был успешным - ищите объект с таким же SHA1, как и ранее, если найден - Voilà !
Но если он не найден, это может быть либо удаление файла, и мой поиск завершен, либо переименование и изменение в той же ревизии ... но как отличить эти случаи?
Я изучил все, что нашел, относительно внутренних элементов Git, но все еще не могу выяснить, что делать в этом случае, что может быть общего между объектами дерева, соответствующими одному и тому же измененному и переименованному файлу в разных ревизиях?
Заранее большое спасибо за помощь!