birleştirilmiş fark yama uygulanamıyor komutu:Örneğin Solaris
diff -u file1 file2 > files.patch
sonucu:
--- file1 Fri Aug 13 17:53:28 2010
+++ file2 Fri Aug 13 17:53:38 2010
@@ -1,1 +1,1 @@
-This is file 1
+This is file 2
Sonra yama komutuyla Solaris bu yamayı uygulamak denerseniz:
patch -u -i files.patch
o üzerinde asılı:
Looks like a unified context diff.
File to patch:
1. Solaris kullanmak için bir yolu var mı birleşik diffs ile yerel yama komutu? 2. Birleştirilmiş formatı uygulamak mümkün değilse, hangi taşınabilir format çoğu taşınabilir olarak kabul edilir?
Güncelleme: Soruma ilk bölümünde cevabını buldum . Ikinci dosya (bu durumda dosya2) ilk olanı (dosya1) ile aynı klasörde varsa, Solaris üzerinde patch
göründüğü görünüyor. Örneğin, aşağıdaki oldukça yaygın fark:
--- a/src/file.src Sat Aug 14 23:07:29 2010
+++ b/src/file.src Sat Aug 14 23:07:37 2010
@@ -1,2 +1,1 @@
-1
-
+2
oldukça yaygın yama komutuyla çalışmayacak :
patch -p1 -u -d a < file.patch
aşağıdaki diff (not İkinci dosya yeniden adlandırıldı) ise:
--- a/src/file.src Sat Aug 14 23:07:29 2010
+++ b/src/file_new.src Sat Aug 14 23:07:37 2010
@@ -1,2 +1,1 @@
-1
-
+2
kusursuz çalışacaktır.
Sorumun ikinci kısmı için aşağıda kabul edilen cevaba bakınız.
Teşekkürler, açıklamalar için Gilles. Bağlam farkları kullanmayı düşüneceğim. Anladığım kadarıyla, değiştirilecek kaynak dosyayla ilgili bağlamsal yama bilgisini yazamazsınız. Ben haklı mıyım Çok uygun değil ... Her neyse, neden diff-u tarafından üretilen diff ile patch -u çalıştırmayı başaramadığımı anlayamıyorum. – Shcheklein
@Shcheklein: "Değiştirilecek kaynak dosyayla ilgili yama bilgileri" ile ne demek istiyorsunuz? İçerik farkları dosya isimlerini içerir. POSIX, 'diff -cr' desteklenmesini gerektirir, bu nedenle çalışması gerekir. Bu arada, '-p0' bir fark yaratıyor mu? – Gilles
Evet, içerik farkları yeterli bilgiyi içerir. Ancak, Solaris'in 'patch' ile ilgili problem farklıydı (sorunun güncellemesine bakın). '-p0' hiçbir fark yaratmaz. Her iki isim de aynı veya her iki dosya da mevcut olduğunda Solaris'te 'patch' özelliği yoktur. – Shcheklein