Вот сценарий: у меня есть локальный репозиторий git, который отражает содержимое другой системы контроля версий (проприетарной). Я написал скрипт, который периодически синхронизирует мою ветку git с последней копией той же ветки этой системы (называемой другим термином в другой системе, но концептуально похожей).
Теперь предположим, что в другой системе кто-то создает ветку из ветви, которую я сейчас синхронизирую, и начинает ее взламывать. То, что я хотел бы сделать, это развернуть первую версию этой другой ветви, а затем найти коммит в моей git-версии основной ветви, ближайшей к новой ветви. Если я смогу это сделать, я буду знать, какой коммит из основной ветви сделать родительским для этой новой ветви.
Это звучит для меня как проблема вычисления «расстояний деревьев». Но поскольку у хэшей SHA1 нет метрики расстояния, есть ли другой способ сделать это, кроме очевидного ручного глубокого поиска при каждом коммите, чтобы выяснить, какой из них имеет наибольшее количество похожих BLOB-объектов?
ОБНОВЛЕНИЕ: см. Ниже, нашел способ сделать это для конкретного домена.