पर एकीकृत diff पैच लागू नहीं कर सकते हैं उदाहरण के लिए, अगर मैं दो फ़ाइलें:सोलारिस
file1:
This is file 1
और करें 2: निम्नलिखित के साथ
This is file 2
और बनाने पैच कमांड:
diff -u file1 file2 > files.patch
परिणाम है:
--- 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
फिर अगर मैं पैच कमांड के साथ सोलारिस पर इस पैच लागू करने का प्रयास:
patch -u -i files.patch
उस पर लटकी हुई है:
Looks like a unified context diff.
File to patch:
1. वहाँ सोलारिस उपयोग करने के लिए एक रास्ता है एकीकृत पैच कमांड के साथ देशी पैच कमांड?
2. एकीकृत प्रारूप लागू करने के लिए कौन सा अंतर प्रारूप सबसे पोर्टेबल माना जाता है?
अद्यतन: मैं अपने प्रश्न के पहले भाग पर जवाब मिल गया है। ऐसा लगता है कि सोलारिस पर patch
लटकता है यदि दूसरी फ़ाइल (इस मामले में फ़ाइल 2) पहले फ़ोल्डर (फ़ाइल 1) के समान फ़ोल्डर में मौजूद है। उदाहरण के लिए, निम्नलिखित बहुत आम diff:
--- 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
बहुत आम पैच कमांड के साथ काम नहीं करेगा:
patch -p1 -u -d a < file.patch
जबकि निम्नलिखित diff (टिप्पणी दूसरी फ़ाइल का नाम बदले जाने):
--- 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
पूरी तरह से काम करेगा।
मेरे प्रश्न के दूसरे भाग के लिए नीचे दिए गए स्वीकृत उत्तर देखें।
स्पष्टीकरण के लिए गिल्स धन्यवाद। मैं संदर्भ diffs का उपयोग करने पर विचार करेंगे। जहां तक मैं समझता हूं, आप बदलने के लिए स्रोत फ़ाइल के बारे में संदर्भ diff पैच जानकारी में लिख नहीं सकते हैं। क्या मैं सही हू? यह बहुत सुविधाजनक नहीं है ... वैसे भी, मैं अभी भी समझ नहीं पा रहा हूं कि मैं diff -u द्वारा उत्पादित diff के साथ पैच -u चलाने में विफल क्यों रहा। – Shcheklein
@Shcheklein: "स्रोत फ़ाइल बदलने के बारे में पैच जानकारी" से आपका क्या मतलब है? संदर्भ diffs फ़ाइल नाम शामिल हैं। POSIX को 'diff-cr' समर्थित होने की आवश्यकता है, इसलिए इसे काम करना होगा। वैसे, क्या 'पैच -00' एक फर्क पड़ता है? – Gilles
हां, संदर्भ diffs में पर्याप्त जानकारी शामिल है। हालांकि, सोलारिस के 'पैच' के साथ समस्या अलग थी (प्रश्न का अद्यतन देखें)। '-p0' कोई फर्क नहीं पड़ता है। ऐसा लगता है कि सोलारिस पर 'पैच' पसंद नहीं करता है जब दोनों नाम हंक में समान होते हैं या दोनों फाइलें मौजूद होती हैं। – Shcheklein