Читання змін

Семантичний діф

Чисте перейменування виглядає в порядковому діфі як цілий видалений файл і цілий доданий файл. Формально це правда і водночас цілковито непотріб.

Над кожним діфом файла Gitcito показує смужку Що змінилося: обидві версії файла розбираються за допомогою tree-sitter — справжніми синтаксичними деревами, а не регулярними виразами — і їхні оголошення зіставляються між собою.

Смужка «що змінилося»: перейменування та зміни сигнатур, символ за символом

Вердикт Приклад
Перейменовано startServer → bootServer
Сигнатура open(path) → open(path, mode)
Додано / Видалено нова функція; видалена функція
Переміщено той самий код, на 40 рядків нижче
Змінено те саме ім’я й та сама сигнатура, інше тіло

Перейменування та зміни сигнатур сортуються першими — саме їх рецензент не має права проґавити. Клацніть рядок, щоб перескочити до цього символу в діфі.

Що воно вміє розбирати

TypeScript, TSX, JavaScript, Python, Go, Rust, Java, C, C++, C#, Ruby, PHP, Swift, Kotlin, Scala, Lua, Bash і Zig.

Файл, для мови якого немає граматики, просто лишається зі своїм звичайним порядковим діфом — смужка взагалі не з’являється. Так само для файлів, більших за 400 КБ.

Чесні межі

  • Перейменування, у якого змінилося ще й тіло, звітується як перейменування і прямо про це каже.
  • Дві однорядкові функції, що випадково схожі між собою, не спаровуються: нижче порогового розміру збіг має бути майже точним, тож ви отримаєте чисте «видалено + додано» замість вигаданого перейменування.
  • Символи, які лише трохи з’їхали, бо щось вище за них розрослося, не звітуються як «переміщено» — це поховало б справжні переміщення.

Дивіться також: Переглядач діфів · Що змінилося відтоді

Покращити цей переклад на GitHub