Как мы сравниваем два файла в двух разных местах. Одно местоположение находится в winscp, а другое - в git. - PullRequest
0 голосов
/ 30 октября 2018

Мне нужно написать скрипт для сравнения двух файлов в двух разных местах. Одно местоположение находится в winscp, а другое - в git.say, в расположении A - в winscp, и в нем есть 1000 файлов, а расположение B - в git, и это у меня есть около 1500 файлов. Теперь мне нужно написать скрипт, чтобы проверить, какие все файлы являются общими или разными в обоих местах.

1 Ответ

0 голосов
/ 30 октября 2018

Вот суть того, что вы должны сделать:

  1. создание хеш-списков для репо, например, find repo_dir -type f -exec md5 {} + > hashes.txt:

    MD5 (file_a) = 6f5902ac237024bdd0c176cb93063dc4
    MD5 (file_b) = 6f5902ac237024bdd0c176cb93063dc4
    

    изменить find по мере необходимости включать / исключать файлы

    Рассматривать каждый список хэшей как пару ключ / значение. Вы хотите найти дельты через репозитории. Вы заинтересованы только в репозиториях с одинаковыми файлами. Вам понадобится способ отследить это (например, счетчик repoCount).

    Все данные списка хеш-функций должны попадать в другую таблицу, индексировать файлы и помещать их хеши в запись рабочей таблицы.

  2. Итерация таблицы ключ / значение, если запись существует во всех репозиториях, проверьте хеш-значения, чтобы увидеть, отличаются ли они / где они, соответственно выведите.

Структура данных может напоминать этот JSON:

{
    "file_path": { "repoCount": 3, "hashes": [ { "base": "repo1", "hash": "6f59..." }, ...],
    ...
}
...