Мне было поручено создать простое веб-приложение Python для графического представления «различий» между различными серверами с точки зрения содержания различных ключевых конфигурационных файлов в файловой системе.
1.Тепловая карта высокого уровня
Для общего обзора я думал о создании тепловой карты каждой системы (например, http://www.jjguy.com/heatmap/). Каждая система сравнивается с изображением с золотым источником (оригинал), а затем мы используем цвета для представления степени отличия от этого изображения.
Файловая система сопоставлена с осью xy, поэтому одинаковые координаты на тепловой карте для каждой системы представляют одинаковые файлы.
Мой первый вопрос здесь: есть ли у вас какие-либо советы по поводу хорошего алгоритма для сопоставления файловой системы с координатами xy? Имейте в виду, хотя каждый сервер должен иметь более или менее одинаковую иерархию файловой системы, это можетбыть обязательно верным, и мне все еще нужно найти способ представления отсутствующих файлов / каталогов или, возможно, добавленных файлов / каталогов. Я не уверен, если это возможно, наряду с первым требованием сопоставления эквивалентных файлов / каталогов с соответствием (илипо крайней мере, аналогично) xy указывает на каждую карту системы. Какие-нибудь новые подходы / алгоритмы здесь?
ТогдаМне нужен способ количественной оценки степени изменений между каждым файлом (количество строк?), А затем передать это на карту тепла.Имейте в виду, что мне нужно различать, скажем, один файл с 10 измененными строками и 10 файлами с 1 измененной строкой в каждом, так как оба имеют разные значения.
2.Детализация для отображения различий в файлах
Я надеюсь также предложить в веб-приложении возможность детализировать отдельные файлы / каталоги и просматривать изменения между ними.
Я использовал комбинацию Kdiff3 и Meld для визуальных изменений кода, и я весьма впечатлен тем, как изменяется отображение Meld.
http://meld.sourceforge.net/meld_file1.png
Я не могнайти любые автономные веб-библиотеки, которые предоставляют механизм визуального сравнения самостоятельно.Наиболее близким я нашел jsdifflib (http://snowtide.com/jsdifflib),, но он, кажется, не соответствует функциональности (или, я полагаю, эстетике) чего-то вроде Meld. Любой совет здесь?
(Revisionist выглядит крутона самом деле - http://benfry.com/revisionist/ - но я не могу найти какой-либо открытый код для него).
Ура, Виктор