2012-04-26 19 views
20

मैं httpd.conf के लिए एक एसवीएन प्रकार पैच फ़ाइल बनाना चाहता हूं ताकि मैं इसे अन्य होस्टों पर आसानी से लागू कर सकूं।एसवीएन पैच कैसे बनाएं और लागू करें?

अगर मैं

cd /root 
diff -Naur /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf > httpd.patch 
cp /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf 
patch < httpd.patch 

करना मुझे मिलता है:

can't find file to patch at input line 3 
Perhaps you should have used the -p or --strip option? 
The text leading up to this was: 
-------------------------- 
|--- /etc/httpd/conf/httpd.conf_original 2012-04-26 13:36:08.331068438 +0200 
|+++ /etc/httpd/conf/httpd.conf 2012-04-26 14:27:36.857075085 +0200 
-------------------------- 
File to patch: 

प्रश्न

क्या मैं गलत कर रहा हूँ?

उत्तर

32

डिफ़ॉल्ट रूप से, patch लक्ष्य फ़ाइल नाम के निर्देशिका भाग को अनदेखा करता है; यह सिर्फ आपकी वर्तमान कार्यशील निर्देशिका में "httpd.conf" की तलाश में है। आप इसे पूरा पथ का उपयोग करना चाहते हैं, तो आप स्पष्ट रूप से इसे -p विकल्प के साथ ऐसा करने के लिए पूछने के लिए:

patch -p0 < httpd.patch

(-p के बाद नंबर यह बताता है फ़ाइल नाम पथ से दूर करने के लिए कितने स्तरों; -p N स्लैश नंबर एन तक सबकुछ बंद कर देता है। पहला स्लैश नंबर 1 है, इसलिए -p0 का अर्थ है "कुछ भी पट्टी न करें"।

सामान्य रूप से, आप पूर्ण पथ रखने पर भरोसा नहीं कर सकते पैच फ़ाइल में, यद्यपि; पैच अधिक आम तौर पर उपयोगी होगा यदि यह किसी भिन्न निर्देशिका लेआउट में फ़ाइलों के लिए भी काम करता है। आप हमेशा पैच चलाने से पहले फ़ाइल युक्त निर्देशिका में सीडी कर सकते हैं (और यदि आवश्यक हो तो पैच फ़ाइल को स्वयं ढूंढने के लिए एक पूर्ण पथ का उपयोग करें)।

30

svn patch का उपयोग करें।

केस 1: /usr/bin/patch का उपयोग कर:

svn diff > $TMPDIR/mypatchfile.patch 
cd myOtherCheckOut 
patch -p0 < $TMPDIR/mypatchfile.patch 

अपने परिवर्तनों को लागू होता है अच्छी तरह से अगर वहाँ के माध्यम से svn add या svn delete

केस 2 कोई अतिरिक्त/नष्ट कर दिया फ़ाइलों हैं:

: svn patch का उपयोग कर
svn diff > $TMPDIR/mypatchfile.patch 
cd myOtherCheckOut 
svn patch $TMPDIR/mypatchfile.patch 

ट्रैक जोड़े और हटाए गए फाइल भी।

नोट है कि न तो पटरियों svn move और rename रों

3

तुम वहाँ है इंटरफेस का उपयोग करने बना सकते हैं और एक पैच लागू करने के लिए एक आसान TortoiseSVN उपयोग कर रहे हैं।

बनाने के लिए:

फ़ोल्डर पर राइट क्लिक करें -> TortoiseSVN -> पैच बनाएं

आप कोई आउटपुट फ़ाइल का चयन करने के लिए प्रेरित किया जाएगा

लागू करने के लिए:

फ़ोल्डर पर राइट क्लिक करें -> TortoiseSVN -> पैच लागू करें

आपको पैच को लागू करने के लिए फ़ाइल को चुनने के लिए एक इंटरफेस के साथ संकेत दिया जाएगा, और अगर नेकैसरी में विलय हो।

संबंधित मुद्दे