Вот суть того, что вы должны сделать:
создание хеш-списков для репо, например, find repo_dir -type f -exec md5 {} + > hashes.txt
:
MD5 (file_a) = 6f5902ac237024bdd0c176cb93063dc4
MD5 (file_b) = 6f5902ac237024bdd0c176cb93063dc4
изменить find
по мере необходимости включать / исключать файлы
Рассматривать каждый список хэшей как пару ключ / значение. Вы хотите найти дельты через репозитории. Вы заинтересованы только в репозиториях с одинаковыми файлами. Вам понадобится способ отследить это (например, счетчик repoCount
).
Все данные списка хеш-функций должны попадать в другую таблицу, индексировать файлы и помещать их хеши в запись рабочей таблицы.
Итерация таблицы ключ / значение, если запись существует во всех репозиториях, проверьте хеш-значения, чтобы увидеть, отличаются ли они / где они, соответственно выведите.
Структура данных может напоминать этот JSON:
{
"file_path": { "repoCount": 3, "hashes": [ { "base": "repo1", "hash": "6f59..." }, ...],
...
}