Это ограничение от ES5 и алгоритма, отображающего строки в 16-битные символы Unicode.На ES6 его можно расширить до 2 ^ 21 бит, охватывая более длинные файлы.
Для ускорения различий строк алгоритм не сравнивает весь текст, а заменяет каждую строку одним символом Unicode.Таким образом, каждый символ в замене отображается на одну уникальную строку в хэш-карте.Число символов Юникода, однако, ограничено, и текущая реализация просто переполняется.
Это не приведет к ложным срабатываниям (одни и те же строки будут считаться одинаковыми), но может пропустить некоторые различия строк при низкой вероятности1 / 65K на строку для естественных различий.
И это предотвращает надежное сопоставление патчей с исходными текстовыми строками, поскольку разные строки отображаются на один и тот же символ, поэтому обратный процесс сопоставляет все такие символы спервая отображенная строка.
Должна быть возможность масштабирования правильного дифференцирования до гораздо больших входов с использованием большего целевого пространства символов, например с помощью 2 или 3 символов для представления уникальных линий.