2009-10-20 9 views
16

मुझे गिट रिपॉजिटरी से सरल पैच बनाने की आवश्यकता होगी जिसे सादे सरल पैच कमांड लाइन उपयोगिता के साथ लागू किया जा सकता है।गिट प्रारूप पैच कर सकते हैं ताकि इसे पैच प्रोग्राम के साथ उपयोग किया जा सके?

क्या यह किया जा सकता है?

उत्तर

17

पैच, git diff उपज, patch उपकरण द्वारा सही ढंग से संसाधित की जाती है।

patch पैच फ़ाइल में सभी अतिरिक्त जानकारी गिट जोड़ता है। पैच को लागू करने के लिए आपको सबसे अधिक संभावना -p1 विकल्प की आवश्यकता होगी।

+0

धन्यवाद। इसे आज़माएं, मुझे लगता है कि मुझे और कॉफी चाहिए ... –

+2

'गीट प्रारूप-पैच' द्वारा जेनरेट किए गए पैच भी जीएनयू पैच द्वारा सही ढंग से प्रोसेस किए जाते हैं ... जब तक वे -एम/-सी विकल्प के साथ उत्पन्न नहीं होते हैं और नामों के बारे में जानकारी रखते हैं , आदि –

+2

'पैच' मैन पेज से: "पैच किसी भी प्रमुख कचरे को छोड़ने की कोशिश करता है, diff लागू करता है, और फिर किसी पीछे पीछे कचरा छोड़ देता है।" गिट diffs में बड़ी अनूठी चीज मॉडलिन के अतिरिक्त है (उदाहरण के लिए "इंडेक्स ...", "नाम बदलें ...", "नई फाइल ...") और पैच बस इन्हें छोड़ने में सक्षम है। गिट भी फाइलनाम उपसर्ग करता है, उदा। "ए/पथ/टू/फाइल", लेकिन इसे पैच के -पी 1 द्वारा छोड़ा जा सकता है। – Cascabel

1

स्वीकार किए जाते हैं जवाब राज्यों निम्नलिखित:

पैच, कि Git diff पैदावार, सही ढंग से पैच उपकरण के द्वारा कार्रवाई की जाती है।

मुझे पूरा यकीन है कि मैं बस ऐसे मामले में भाग गया जहां यह गलत है। /usr/bin/patch बस चुपचाप (किसी त्रुटि की रिपोर्ट किए बिना) फ़ाइल नाम बदलें जानकारी सहित मेरे पैच को अनदेखा कर दिया गया है, इस प्रकार तैनाती तोड़ रहा है (सौभाग्य से मैं केवल इस समय तैनाती का परीक्षण कर रहा हूं :-) ...

मैं इस वैकल्पिक उत्तर को पोस्ट कर रहा हूं एक ही समस्या में चल रहे अन्य लोगों के लिए एक सिर के रूप में, क्योंकि मैं थोड़ी देर के लिए अपने सिर खरोंच कर रहा था ... StackOverflow पर जवाबों के लिए टिप्पणियां भी स्पष्ट रूप से उद्धरण शामिल नहीं हो सकता है।

विडंबना यह है कि मैं अब इस समस्या को दूर करने के लिए एकीकृत डिफ प्रारूप में स्विच कर चुका हूं और अब मेरी तैनाती अलग-अलग तरीके से टूट जाती है क्योंकि एकीकृत diffs खाली फ़ाइलों (उदा। __init__.py) के निर्माण का प्रतिनिधित्व नहीं कर सकता है। एक चट्टान और एक कठिन जगह के बीच होने के बारे में बात करो!