2009-02-12 18 views
23

Kaynak ağaca bir yama uygulamakta sorun yaşıyorum ve her zamanki gibi -p sıyırma problemi değil. patch, dosyayı yamaya bulabilir..rej dosyaları nasıl okunur, yani

Özel olarak, benim sorum .rej dosyalarının patch birkaç hunks üzerinde başarısız olduğunda oluşturduğu/yorumlama şeklidir. Gördüğüm çoğu patch/diff tartışmalarını içermiyor.

cevap

17

Basit bir örnek:

$ echo -e "line 1\nline 2\nline 3" > a 
$ sed -e 's/2/b/' <a >b 
$ sed -e 's/2/c/' <a >c 
$ diff a b > ab.diff 
$ patch c < ab.diff 
$ cat c.rej 
*************** 
*** 2 
- line 2 
--- 2 ----- 
+ line b 

Gördüğünüz gibi: eski dosya hattını 2 ve gerektiği hat b içeren yeni dosyasını içerir. Ancak, aslında c satırını içerir (reddetme dosyasında görünmez).

Aslında, bu tür sorunları çözmenin en kolay yolu, diff parçasını .diff/.patch dosyasından almak, yamalanacak dosyadaki uygun yere yerleştirmek ve ardından kodu elle elle karşılaştırmaktır. dışarı, hangi çizgiler aslında çatışmaya neden olur.

Veya - Alternatif olarak: Özgün dosyayı (değiştirilmemiş) alın, yerleştirin ve dosyada üç kez birleştirin.

+0

basit ve anlaşılır. Açıklama için teşekkürler Bodo, orijinal dosyayı almayı düşünüyorum ve 3-yollu birleştirme yapmak benim için en hızlısı olacak. –

+0

Bu siteye yeni katılıyorum - bu cevap için 'puan' verebileceğimden emin değilim.Bir openid için bana soruyor –

9

Wiggle, yama başarılı olmadığında .rej dosyalarını uygulamak için harika bir araçtır.

2

Yama dosyaları ile ilgili bir uzman değilim, ancak içerdikleri bilgileri anlamamıza bağlı olarak bunları okumaya biraz açıklık getirmek istiyorum.

Sizin .rej dosyalar size söyleyecektir:

  • özgün ve .rej dosyası arasındaki fark;
  • Sorun kodunun orjinal dosyasında başladığı yer, bu dosya için kaç satır devam eder;
  • ve kodun yeni dosyada başladığı ve bu dosyada kaç satır geçtiği.

Yani bu mesajı verilmiş, benim .rej dosyasının başında belirtildiği:

diff a/www/js/app.js b/www/js/app.js (rejected hunks) @@ -4,12 +4,24 @@

görüyorum benim sorunum dosyası (www/js/app), orijinal (a/www/js/app.js olarak belirtildiği arasındaki fark için ilk satırda) ve .rej dosyası (b/www/js/ olarak belirtilir) orijinalin 4. satırından başlar ve 12 satır (iki satırda @@ -4,12, +4,24 @@'da virgülden önceki kısım) başlar ve yeni sürümün 4. satırında başlar. dosya ve 24 satır (@@ -4,12, +4,24 @@ içinde virgül sonra bölümü için devam ediyor.

Daha fazla bilgi için, düzeltme eki dosyalarının (yukarıdaki notta yer alan bilgilerin yanı sıra eklenen ve/veya dosya sürümleri arasındaki ayrıntılar dahil) mükemmel genel görünümüne bakın: http://blog.humphd.org/vocamus-906/.

Herhangi bir düzeltme veya açıklama elbette hoş geldiniz.