Семантичний діф
Чисте перейменування виглядає в порядковому діфі як цілий видалений файл і цілий доданий файл. Формально це правда і водночас цілковито непотріб.
Над кожним діфом файла 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 КБ.
Чесні межі
- Перейменування, у якого змінилося ще й тіло, звітується як перейменування і прямо про це каже.
- Дві однорядкові функції, що випадково схожі між собою, не спаровуються: нижче порогового розміру збіг має бути майже точним, тож ви отримаєте чисте «видалено + додано» замість вигаданого перейменування.
- Символи, які лише трохи з’їхали, бо щось вище за них розрослося, не звітуються як «переміщено» — це поховало б справжні переміщення.
Дивіться також: Переглядач діфів · Що змінилося відтоді