Metin Karşılaştırma (satır bazlı, renk kodlu)
Orijinal ve düzenlenmiş sürümü yapıştırın, yan yana satır bazlı diff görün. Belgeler, config dosyaları, kod inceleme ve metin düzenlemede yararlı.
Nasıl çalışır
Diff nasıl hesaplanır
İki sürüm arasında paylaşılan satırları bulmak için Longest Common Subsequence (LCS) algoritmasını kullanıyoruz. Her ikisinde de görünen satırlar 'değişmedi'. Sadece orijinalde olanlar 'silindi'. Sadece düzenlenmiş sürümde olanlar 'eklendi'. Sonuç, her iki tarafta satır numaraları korunmuş, açıkça açıklamalı bir karşılaştırma.
LCS, git ve çoğu diff aracının kullandığı standart yaklaşımdır. Mümkün olan en uzun eşleşen diziyi seçer; bu genellikle bir insanın 'aynı paragraf' diyeceği şeyle örtüşür. Çok büyük girdiler için (10.000+ satır) çalışma süresi karesel artar; büyük log'ları karşılaştırmanız gerekiyorsa streaming diff aracı kullanın.
Bu ne için iyi
Belge revizyonları: taslaklar arasında tam olarak neyin değiştiğini görün. Yasal sözleşmeler, hizmet şartları ve 'neyin değiştiği?' önemli olan her metin için yararlı.
Yapılandırma dosyaları: yanlış yapılandırmayı tespit etmek için iki .env veya YAML dosyasını karşılaştırın. Veya bir deploy script'in iki sürümünü.
Metin düzenleme: yazarlar editörün revizyonlarını bağlam içinde görebilir, özellikle yalnızca birkaç satır değiştiğinde.
Kod incelemesi (hafif kullanım): küçük parçalar için. Gerçek kod incelemesi için sözdizimini anlayan bir araç kullanın — semantik flag'lerle git diff veya özel bir inceleme aracı daha iyi sonuç verir.
Sınırlamalar
Satır seviyesinde diff yapıyoruz. Bir satırda 'cat' yerine 'cats' yazarsanız, tüm satır kaldırıldı-ve-eklendi olarak görünür; eklenen 's'yi vurgulamayız. Kelime ve karakter seviyesi diff'ler bunun için yararlıdır ama uzun satırlarda okumak zordur.
Satır sonu boşluğu önemlidir — 'foo' ve 'foo ' (sondaki boşluk) farklı satır sayılır. Boşluğa duyarsız karşılaştırma istiyorsanız, yapıştırmadan önce metni normalize edin.
Sıralama önemlidir. Farklı pozisyonlardaki iki paragraf hem silindi hem eklendi sayılır. Diff, 'taşınmış' blokları algılamaya çalışmaz.
Sık sorulan sorular
›Kelime seviyesi diff destekliyor mu?
Henüz değil — yalnızca satır seviyesi. Kısa karşılaştırmalar için karakter veya kelime seviyesi daha sonra eklenebilir.
›Metnim ne kadar büyük olabilir?
Her iki tarafta pratik olarak birkaç bin satıra kadar. Karesel karmaşıklık, çok büyük girdilerin tarayıcı sekmesini kısa süre dondurabileceği anlamına gelir.
›Veri tarayıcımdan ayrılıyor mu?
Hayır. Diff tamamen yerel olarak çalışır.
›Sondaki boşluklar önemli mi?
Evet. Yalnızca sondaki boşlukta farklı iki satır farklı sayılır. Boşluğa duyarsız eşleştirme istiyorsanız yapıştırmadan önce boşlukları normalize edin.
›Diff'i kaydedebilir miyim?
Dosya olarak değil. Şimdilik render edilen metni kopyalayıp yapıştırın veya ekran görüntüsü alın.
›Bu, git diff ile aynı algoritma mı?
Kavramsal olarak evet — LCS kullanıyoruz, bu git'in seçeneklerinden biridir. Git varsayılan olarak benzer ama daha sofistike bir algoritma kullanır (Myers diff, Patience opt-in olarak). Kısa girdiler için çıktı temelde aynı.
›Sadece bir kelime değiştiğinde neden tüm satır işaretleniyor?
Çünkü satır seviyesinde çalışıyoruz. Karakter seviyesi diff değişen kelimeyi vurgular ama uzun satırlarda okumak zordur.
›İkiden fazla sürüm karşılaştırabilir miyim?
Bu araçta hayır. Çok yönlü merge için 3-way diff aracı kullanın.
İlgili araçlar
Son güncelleme: