Сравнение текста / кода
Сравнивайте два фрагмента кода или текста построчно с подсветкой добавленных и удалённых строк.
Как пользоваться
- Вставьте более раннюю версию в поле «Исходный текст», а более позднюю — в поле «Изменённый текст». В обоих полях изначально находится короткий пример JSON, который можно заменить.
- Результат в разделе «Различия» обновляется по мере ввода или вставки текста. Кнопки сравнения нет, нажимать ничего не нужно.
- Читайте результат сверху вниз: строка со знаком - на красном фоне удалена из исходного текста, строка со знаком + на зелёном фоне добавлена в изменённом тексте, а строки без знака, написанные серым шрифтом, одинаковы в обоих вариантах.
- Посмотрите на числа на одном уровне с заголовком «Различия»: они показывают количество добавленных и удалённых строк, причём изменённая строка учитывается один раз как удалённая и один раз как добавленная. Если все строки совпадают, вместо чисел там появляется сообщение «Тексты совпадают.»
Частые вопросы
Загружается ли сравниваемый текст на сервер и сохраняется ли он?
Нет. Сравнение выполняется в вашем браузере с помощью JavaScript, а вставленный текст не отправляется в LeedyBox. Инструмент его также не сохраняет.
Почему две строки показаны как удалённая и добавленная, хотя выглядят одинаково?
Строки сравниваются точно, символ за символом, поэтому, чтобы они различались, достаточно пробела в конце строки, табуляции вместо пробелов, неразрывного пробела вместо обычного или невидимого символа нулевой ширины. Кроме того, многие буквы с диакритикой могут храниться в Unicode в двух формах — одним символом или буквой с последующим комбинируемым знаком; выглядят они одинаково, но не совпадают. Заглавные и строчные буквы тоже считаются разными. Переводы строк Windows и Unix считаются одинаковыми, так что причина не в них.
Почему в конце появляется добавленная или удалённая пустая строка?
Обычно один текст заканчивается переводом строки, а другой — нет. Текст разбивается на строки по каждому переводу строки, поэтому перевод строки в самом конце добавляет пустую последнюю строку. Сделайте так, чтобы оба текста заканчивались одинаково, и лишняя строка исчезнет.
Как отображаются изменённые и перемещённые строки?
Инструмент ищет наибольшее количество строк, которые встречаются в обоих текстах в одном и том же порядке, и отмечает все остальные строки как удалённые или добавленные. Поэтому изменённая строка выглядит как удалённая строка плюс добавленная, причём обычно удалённая идёт первой; если изменено несколько строк подряд, удалённые строки обычно идут первыми одной группой. Перемещения как таковые не распознаются: перемещение отображается как строки, удалённые в одном месте и добавленные в другом. Если большой блок строк перемещается через несколько других строк, удалёнными и добавленными могут оказаться именно эти несколько строк, а сам блок останется неотмеченным.
Можно ли использовать результат как патч для git apply или команды patch?
Нет. В результате показываются все строки: перед добавленными стоит +, перед удалёнными — -, а перед неизменёнными — два пробела. В отличие от формата unified diff, в нём нет заголовков фрагментов @@ с номерами строк и строк --- и +++ с именами файлов, поэтому git apply и команда patch не смогут его прочитать. Используйте его для просмотра изменений, а файлы патчей создавайте с помощью git diff или diff -u.
Какой объём текста можно сравнить?
Совпадающие строки в начале и в конце обоих текстов не учитываются в ограничении, но всё равно показываются в результате. Если число оставшихся строк исходного текста, умноженное на число оставшихся строк изменённого, превышает 4 000 000 (например, 2500 строк против 2000), вместо результата инструмент показывает сообщение. В этом случае сравнивайте тексты по частям. Даже ниже этого предела длинные тексты могут замедлять отклик страницы при вводе, потому что сравнение запускается заново после каждого изменения.
Почему после переформатирования JSON или кода появляется так много изменений?
Инструмент сравнивает текст, а не смысл, поэтому новые отступы, переставленные ключи или строка, разбитая на две, — всё это считается изменениями. Перед сравнением отформатируйте обе версии одинаково, с одинаковыми отступами и порядком ключей, чтобы оставшиеся различия в основном касались содержания.