Enchantner
В общем, небольшой ап :) Разбираю тут работу с модулем difflib. Прикол в том, что diff файла получается раза в полтора больше, чем сам файл. Неужели нет алгоритма попроще, чтобы многомегабайтный дамп бд лежал просто кейфреймом, а остальные файлы были маленькими диффами от него?
Я с difflib не разбирался, и в работе системы контроля версия понимаю только алгоритм - но все-таки попробую высказаться.
Если у вас есть какой-то дамп(т е файл), затем в него внесены изменения , то я думаю что diff между этими 2-мя файлами будет примерно в 2 раза больше внесенных изменений. Пример - вы изменили три строчки - diff будет содержать 6 строчек - три первоначальные и три конечные строчки. Если коммиты(т е изменения) небольшие, то и diff будут небольшие. Если же изменилось почти все , то и размер diff будет в 1.5-2 раза больше оригинала.
Еще одна засада может быть вот в чем - я рассказал про обычный текстовый файл, в который diff может посмотреть изнутри(ну вот так я выразился). А вот дамп БД может и не быть обычным текстовым файлом. И при небольших изменениях в самой базе, дампы при построчном сравнении в diff могут отличаться просто кардинально. Вот тогда diff действительно будет колоссальных размеров. Как быть в такой ситуации я не знаю - либо изменить diff, чтобы он понимал дамп по нормальному(читай писать свой diff) или как-то сравнивать в самой бд и тд.