Farklar, sadece bir dosyayı diğeriyle karşılaştırmaktan daha karmaşık olabilir. Tüm dizin hiyerarşilerini karşılaştırabilir. GCC'de bir hatayı düzeltmek istediğim örneği düşünün. Değişikliğim, 4 veya 5 dosyaya bir veya iki satır ekler ve bu ve diğer dosyalardaki birkaç satırı siler. Bu değişiklikleri birine iletmek istersem, potansiyel olarak GCC'ye dahil edilmek için seçeneklerim
- Kaynak ağacın tamamını kopyala
- Yalnızca değiştirilen dosyaları kopyala
- Sadece yaptığım değişiklikleri sağla
Kaynak ağacın tamamını kopyalamak mantıklı değil, ama sorunuzun özünü oluşturan diğer iki seçenek hakkında. Şimdi bir başkasının da benim yaptığım dosya üzerinde çalıştığını düşünüyoruz ve ikimiz de değişikliklerimizi birine veriyoruz. Bu kişi ne yaptığımızı ve değişikliklerin uyumlu (dosyanın farklı bölümleri) veya çakışma (dosyanın aynı satırları) olup olmadığını nasıl bilecek? Onları dağıtacak! Diff, dosyaların birbirinden ve değiştirilmemiş kaynak dosyadan nasıl farklı olduğunu söyleyebilir. Fark gerekli olan şeyse, farkın ilk etapta gönderilmesi daha mantıklıdır. Bir diff birden fazla dosyadan değişiklikler de içerebilir, bu yüzden toplam 9 dosyayı düzenlerken, bu değişiklikleri tanımlamak için tek bir diff dosyası sağlayabilirim.
Farklar tarih vermek için de kullanılabilir. Ya üç ay önce bir değişiklik sadece bugün keşfettiğim bir hataya neden olsaydı. Hata tanıtıldığında daraltabilir ve belirli bir değişikliğe izole edebilir, "geri almak" için fark kullanabilir veya değişikliği geri alabilirsiniz. Bu, yalnızca dosyaları kopyalarsam kolayca yapabileceğim bir şey değil.
Tüm bunlar, programların oluşturulduğu zamandan bugüne kadar bir dizi farklı dosya olarak dosya geçmişini kaydedebileceği kaynak sürüm kontrolüne bağlanır. Diffs geçmişi sağlar (dosyayı herhangi bir günde olduğu gibi yeniden oluşturabilirim), bir şeyi kırmak için kimin suçlanacağını görebilirim (farkın bir sahibi vardır) ve onlara belirli diffs ( belki çok değişiklik yaptığımda sadece bir değişiklikle ilgileniyorlar).
Özetle, evet, ve işlemlerinden cp
daha kolaydır , ancak dosya değişikliğinin izlenmesi için önemli olan durumlardan daha yararlıdır ve daha büyüktür .diff
patch
diff
patch
cp