Hızlı bir metin karşılaştırması nerede işe yarar
Çoğu düzenleme yapıldıktan sonra gözden kaçar. İki sürümü yan yana okumak yavaş ve güvenilmezdir: insanlar bir fiyattaki değişen rakamı, düşürülmüş bir "değil"i ya da yer değiştirmiş bir tarihi sürekli kaçırır.
Diff bu avı sizin yerinize yapar. Gerçekten zaman kazandırdığı tipik durumlar:
- İmzalamadan önce karşı tarafın bir sözleşmede, teklifte veya koşullarda neyi değiştirdiğini kontrol etmek.
- Hangi kayıtların eklendiğini ya da kaybolduğunu görmek için aynı listenin (e-postalar, SKU'lar, kimlikler) iki dışa aktarımını karşılaştırmak.
- İki yapılandırma dosyasının veya
.envdosyasının neden farklı davrandığını bulmak. - Düzenlenmiş bir makaleyi ya da çeviriyi orijinal taslakla karşılaştırarak gözden geçirmek.
Karşılaştırma nasıl çalışır
Araç, git diff ve klasik Unix diff komutunun arkasındaki algoritmalarla aynı aileden olan en uzun ortak alt dizi yaklaşımını kullanır. İki sürümün paylaştığı mümkün olan en büyük metin miktarını arar, bunu değişmemiş olarak tutar ve geri kalan her şeyi orijinalden silinmiş ya da yeni sürümde eklenmiş olarak işaretler.
Çıktı siz yazdıkça veya yapıştırdıkça yeniden hesaplanır; böylece iki kutudan birinde bir şeyi düzeltip etkisini hemen görebilirsiniz. Silinen parçalar kırmızı ve üstü çizili, eklenen parçalar yeşil, geri kalanı ise kod ve tablolardaki hizalama okunabilir kalsın diye eş aralıklı bir yazı tipinde düz metin olarak gösterilir.
Sonucun üstündeki sayaç her modda biraz farklı bir şey ifade eder:
- Satır bazında modda satırları sayar:
+4 / −2, dört satırın eklendiği ve ikisinin silindiği anlamına gelir. Düzenlenmiş bir satır bir kez silinmiş (eski sürüm), bir kez de eklenmiş (yeni sürüm) olarak sayılır. - Kelime bazında modda tek tek kelimeleri değil, değişen parçaları sayar. Tek bir yerde duran ve yeniden yazılmış altı kelimelik bir ifade, bir silme ve bir ekleme olarak sayılır.
Uygulamada satır modu ve kelime modu
Satır modu her satırı bölünmez bir birim olarak ele alır. Satırların kendi başına anlam taşıdığı her şey için doğru model budur: kaynak kod, CSV satırları, günlük dosyaları, isim listeleri, YAML veya .ini ayarları. Aynı zamanda katıdır: satır sonundaki bir boşluk ya da boşluklar yerine kullanılan bir sekme, onu farklı bir satır yapar.
Kelime modu metni kelimelere ve noktalama işaretlerine böler ve bunları karşılaştırır. Bir paragrafın tamamının çoğu zaman tek bir uzun satır olduğu ve satır bazlı karşılaştırmanın size yalnızca "bu paragraf değişti" diyebileceği düz yazılarda çok daha iyidir. Kelime modunda hangi kelimelerin değiştirildiğini tam olarak görürsünüz. Ayrıca daha hoşgörülüdür: cümleler arasındaki çift boşluk gibi yalnızca boşluktan oluşan farklar büyük ölçüde yok sayılır.
İyi bir alışkanlık, değişikliklerin nerede olduğunu görmek için satır moduyla başlamak, ardından uzun bir satırın içinde tam olarak neyin değiştiğini okumak için kelime moduna geçmektir.
Temiz ve okunabilir sonuçlar almak
Kafa karıştıran diff'lerin çoğu gerçek düzenlemelerden değil, biçimlendirme gürültüsünden kaynaklanır. Karşılaştırmadan önce kontrol edilmesi gereken birkaç şey:
- Satır sonları ve satır kaydırma. PDF'den veya bir e-postadan kopyalanan metinlerde cümlelerin ortasında çoğu zaman sabit satır sonları bulunur. Bir sürüm kaydırılmış, diğeri kaydırılmamışsa satır modu her şeyi değişmiş olarak işaretler. Kelime modunu kullanın veya önce satır sonlarını kaldırın.
- Büyük/küçük harf. Karşılaştırma büyük/küçük harfe duyarlıdır; "Fatura" ile "fatura" farklıdır. Harf durumu sizin için önemli değilse yapıştırmadan önce iki metni de büyük küçük harf çevirici ile normalleştirin.
- Sıralı ve sırasız listeler. Diff sırayı dikkate alır. İki liste aynı öğeleri farklı sırayla içeriyorsa yer değiştirmeleri silme ve ekleme olarak gösterir. Yalnızca hangi öğelerin bulunduğu önemliyse önce iki listeyi de aynı şekilde sıralayın.
- JSON ve küçültülmüş veriler. Küçültülmüş bir JSON belgesi devasa tek bir satırdır. İki sürümü de JSON biçimlendirici ile aynı girintiyi kullanarak düzgün biçimlendirin, ardından satır satır karşılaştırın; her anahtar kendi satırına düşer ve değişiklikler apaçık görünür.
- Akıllı tırnaklar ve tireler. Kelime işlemciler
"işaretini tipografik tırnaklarla,-işaretini de kısa çizgiyle değiştirir. Bunlar ilk bakışta aynı görünür ama farklı karakterlerdir ve değişiklik olarak çıkar.
Boyut ve gizlilik
İki metin de sayfada kalır. Hiçbir şey bir sunucuya gönderilmez; bu yüzden henüz yayımlanmamış bir sözleşmeyi, şirket içi kaynak kodunu ya da müşteri verisi içeren bir dosyayı karşılaştırmak, iki alışveriş listesini karşılaştırmaktan farksızdır. Sekmeyi kapatmak her şeyi siler.
Hız, cihazınıza ve metinlerin ne kadar farklı olduğuna bağlıdır. Birkaç bin satır anında karşılaştırılır; on binlerce yoğun şekilde değişmiş satır birkaç saniye sürebilir. Yavaş geliyorsa yalnızca ilgili bölümü karşılaştırın ya da eşleştirilecek birim sayısı kelime modundan çok daha az olan satır modunu kullanın.