2012-04-02 18 views
49

Birkaç ipler zaten bu konuda olduğunu biliyoruz, ama kimse tam olarak ilk dizine yama güncellemek için nasıl uygulanacağı sonra, yama dosyası oluşturmak için ilk diff gerçekleştirmek için tam olarak nasıl anlattı. Benim durumumdaTüm dizini güncelleştirmek için yama nasıl oluşturulur?

, herkes web'den indirebileceğiniz dosyaların bir dizin var. Bu dizini aldım ve üzerinde değişiklikler yaptım ve değiştirilmiş dizinde tam olarak neleri yeniden üretmek için başkalarının indirilen dizine uygulayabilecekleri bir yama dosyası oluşturmak istiyorum.

Yardım? Yayağımın nasıl uygulanacağına dair diğer kişiye ne söylemem gerekiyor?

cevap

91

Sadece bu aynı sorunu vardı - o yarım nasıl yapılacağına ilişkin öneriler bir sürü.

Yama dosya oluşturma: İşte ben yama ve işe unpatching hem almak için ne yaptığını ise/tmp diyelim her iki dizinlerin

  1. koyun kopya, bu yüzden yama oluşturabilir dosya veya cesur, yan yana olsun - bir dizinde.

  2. eski ve yeni iki dizine üzerinde uygun bir diff çalıştırın: Bir kişinin orig/dizini vardır

    diff -ruN orig/ new/ > file.patch 
    # -r == recursive, so do subdirectories 
    # -u == unified style, if your system lacks it or if recipient 
    #  may not have it, use "-c" 
    # -N == treat absent files as empty 
    

, bunlar yama çalıştırarak yenisini yeniden oluşturabilirsiniz.

eski klasöre ve yama dosyasından yeni bir klasör yeniden oluşturun için:

  1. taşı orig/klasör Bu klasör clobbered alacak

  2. var olan bir dizine yama dosyası, bu nedenle tutmak bir yere yedekleyin veya bir kopya kullanın. Bu noktada

    patch -s -p0 < file.patch 
    # -s == silent except errors 
    # -p0 == needed to find the proper folder 
    
  3. , orij/klasör yeni/içeriğe sahip, ama yine yüzden eski adı vardır:

    mv orig/ new/ # if the folder names are different 
    
+3

Ben senin elini sıkmak isterdim. Çok teşekkürler! – poundifdef

+0

@DavidH Bu Cygwin ile Windows üzerinde çalışıyor mu? – onmyway133

+0

Ben bir mac adamım, bu yüzden hiç bir fikrim yok. Yapmanız gereken, Cygwin'de yama ve fark seçeneklerini kontrol etmektir. Bu yüzden yukarıdaki seçeneklerin ne anlama geldiğini ekledim - yani bir veya başka bir program farklı seçenekler sunuyorsa, işe almak için neyin değişeceğini anlayabilirsiniz. Kavramsal olarak tüm yama/fark programları işlevselliği desteklemelidir. –

2

kontrol dışarı ++ kütüphanesi açık kaynak Bokböceği C: https://github.com/loyso/Scarab

size anlatılan tam olarak ne yapar. xdelta kütüphanesi kullanılarak dosya başına farklılıklar oluşturur ve arşiv paketine yerleştirir. Bu paketi yeniden dağıtabilir ve farkı uygulayabilirsiniz. Win32 için ikili dosyalar var.

Ben Scarab projesinin yazarı.

İlgili konular