Kiedy szybkie porównanie tekstów się opłaca
Większość poprawek staje się niewidoczna zaraz po ich wprowadzeniu. Czytanie dwóch wersji obok siebie jest powolne i zawodne: ludzie regularnie przeoczają zmienioną cyfrę w cenie, usunięte „nie” albo zamienioną datę.
Diff wykonuje to szukanie za Ciebie. Typowe sytuacje, w których naprawdę oszczędza czas:
- Sprawdzenie, co druga strona zmieniła w umowie, ofercie lub regulaminie, zanim cokolwiek podpiszesz.
- Porównanie dwóch eksportów tej samej listy (adresów e-mail, kodów SKU, identyfikatorów), żeby zobaczyć, które pozycje się pojawiły, a które zniknęły.
- Ustalenie, dlaczego dwa pliki konfiguracyjne lub pliki
.envdziałają inaczej. - Przejrzenie zredagowanego artykułu lub tłumaczenia względem pierwotnej wersji.
Jak działa porównanie
Narzędzie opiera się na metodzie najdłuższego wspólnego podciągu — tej samej rodzinie algorytmów, na której działają git diff i klasyczny uniksowy diff. Szuka możliwie największej ilości tekstu wspólnego dla obu wersji, pozostawia ją jako niezmienioną, a całą resztę oznacza jako usuniętą z oryginału albo dodaną w nowej wersji.
Wynik jest przeliczany na bieżąco podczas pisania lub wklejania, więc możesz poprawić coś w dowolnym polu i od razu zobaczyć efekt. Usunięte fragmenty są wyświetlane na czerwono z przekreśleniem, dodane na zielono, a reszta jako zwykły tekst czcionką o stałej szerokości, dzięki czemu wyrównanie w kodzie i tabelach pozostaje czytelne.
Licznik nad wynikiem znaczy w każdym trybie coś nieco innego:
- W trybie Wierszami liczy wiersze:
+4 / −2oznacza, że dodano cztery wiersze, a usunięto dwa. Edytowany wiersz liczy się raz jako usunięty (stara wersja) i raz jako dodany (nowa). - W trybie Słowami liczy zmienione fragmenty, a nie pojedyncze słowa. Przeredagowana fraza z sześciu słów w jednym miejscu liczy się jako jedno usunięcie i jedno dodanie.
Tryb wierszy a tryb słów w praktyce
Tryb wierszy traktuje każdy wiersz jako niepodzielną całość. To właściwy model dla wszystkiego, w czym wiersze mają samodzielne znaczenie: kodu źródłowego, wierszy CSV, plików logów, list nazwisk, ustawień YAML lub .ini. Jest też rygorystyczny: spacja na końcu albo tabulator zamiast spacji sprawia, że wiersz jest inny.
Tryb słów dzieli tekst na słowa i znaki interpunkcyjne i porównuje właśnie je. Sprawdza się znacznie lepiej przy prozie, gdzie cały akapit to często jeden długi wiersz, a diff wierszowy powiedziałby tylko „ten akapit się zmienił”. W trybie słów widać dokładnie, które słowa zostały zastąpione. Jest też bardziej wyrozumiały: różnice polegające wyłącznie na białych znakach, na przykład podwójna spacja między zdaniami, są w dużej mierze ignorowane.
Dobry nawyk to zacząć od trybu wierszy, żeby zobaczyć, gdzie są zmiany, a potem przełączyć się na tryb słów, żeby przeczytać, co dokładnie zmieniło się w długim wierszu.
Jak uzyskać czysty, czytelny wynik
Większość mylących różnic bierze się z szumu formatowania, a nie z prawdziwych poprawek. Kilka rzeczy do sprawdzenia przed porównaniem:
- Końce wierszy i zawijanie. Tekst skopiowany z PDF lub e-maila często ma twarde podziały wierszy w środku zdań. Jeśli jedna wersja jest zawinięta, a druga nie, tryb wierszy oznaczy wszystko jako zmienione. Użyj trybu słów albo najpierw usuń podziały.
- Wielkość liter. Porównanie rozróżnia wielkość liter, więc „Faktura” i „faktura” to co innego. Jeśli wielkość liter nie ma dla Ciebie znaczenia, ujednolić oba teksty konwerterem wielkości liter przed wklejeniem.
- Listy posortowane i nieposortowane. Diff uwzględnia kolejność. Jeśli dwie listy zawierają te same pozycje w innej kolejności, przesunięcia pokaże jako usunięcia i dodania. Jeśli interesuje Cię tylko to, co jest na liście, najpierw posortuj obie w ten sam sposób.
- JSON i zminifikowane dane. Zminifikowany dokument JSON to jeden ogromny wiersz. Sformatuj obie wersje formaterem JSON z tym samym wcięciem, a potem porównaj wierszami; każdy klucz trafi do osobnego wiersza i zmiany staną się oczywiste.
- Cudzysłowy drukarskie i półpauzy. Edytory tekstu zamieniają
"na cudzysłowy typograficzne, a-na półpauzy. Na pierwszy rzut oka wyglądają tak samo, ale to inne znaki i pojawiają się jako zmiany.
Rozmiar i prywatność
Oba teksty zostają na stronie. Nic nie jest wysyłane na serwer, więc porównanie nieopublikowanej umowy, wewnętrznego kodu źródłowego czy pliku z danymi klientów niczym się nie różni od porównania dwóch list zakupów. Zamknięcie karty usuwa wszystko.
Szybkość zależy od Twojego urządzenia i od tego, jak bardzo teksty się różnią. Kilka tysięcy wierszy porównuje się natychmiast; dziesiątki tysięcy mocno zmienionych wierszy mogą zająć kilka sekund. Jeśli działa ociężale, porównuj tylko istotny fragment albo użyj trybu wierszy, który ma znacznie mniej jednostek do dopasowania niż tryb słów.