Git: Как мне найти коммит, который наиболее точно соответствует каталогу?

Кто-то взял неизвестную мне версию Moodle, применил множество изменений в каталоге и выпустил ее ( дерево здесь ]).

Как я могу определить, какая фиксация исходного проекта была, скорее всего, отредактирована для формирования этого дерева?

это позволило бы мне сформировать ветвь в соответствующем коммите с этим патчем. Конечно, это произошло из веток 1.8 или 1.9 , вероятно, из тега выпуска, но различия между конкретными коммитами мне не очень помогают.

Посмертное обновление: Ответ knittl приблизил меня настолько близко, насколько я мог. Сначала я добавил свое репозиторий патчей как удаленный «чужой» (никаких общих коммитов, это нормально), а затем сделал циклическое сравнение с парой опций формата. Первый использовал формат - shortstat :

for REV in $(git rev-list v1.9.0^..v1.9.5); do 
    git diff --shortstat "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment >> ~/rdiffs.txt; 
    echo "$REV" >> ~/rdiffs.txt; 
done;

Второй просто подсчитал изменения строк в объединенном различии без контекста:

for REV in $(git rev-list v1.9.0^..v1.9.5); do 
    git diff -U0 "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment | wc -l >> ~/rdiffs2.txt;
    echo "$REV" >> ~/rdiffs2.txt; 
done;

Были тысячи коммитов, которые нужно было изучить, но это один кажется наиболее подходящим.

39
задан Community 23 May 2017 в 12:17
поделиться