पैच (यूनिक्स)

कंप्यूटर टूल पैच एक यूनिक्स कंप्यूटर प्रोग्राम है जो टेक्स्ट फ़ाइलों को एक अलग फ़ाइल में निहित निर्देशों के अनुसार अद्यतन करता है, जिसे पैच फ़ाइल कहा जाता है। पैच फ़ाइल (संक्षेप में पैच भी कहा जाता है) एक टेक्स्ट फ़ाइल है जिसमें अंतरों की एक सूची होती है और मूल और अद्यतन फ़ाइल के साथ संबंधित अंतर प्रोग्राम को तर्क के रूप में चलाकर तैयार किया जाता है। पैच के साथ फ़ाइलों को अपडेट करने को अक्सर पैच लगाना या बस फ़ाइलों को पैच करना कहा जाता है।

इतिहास
मूल पैच प्रोग्राम लैरी वॉल (जिन्होंने पर्ल प्रोग्रामिंग भाषा बनाई) द्वारा लिखा गया था और पोस्ट किया गया था (जो बाद में बन गया  ) मई 1985 में.

पैच को XPG4 में जोड़ा गया, जो बाद में POSIX बन गया। वॉल का कोड ओपनबीएसडी में प्रदान किए गए पैच प्रोग्राम का आधार बना हुआ है, फ्रीबीएसडी, और schilytools. कहा जाता है कि सॉफ्टवेयर फाउंडेशन खोलें, खुला समूह में विलय हो गया है, ने एक व्युत्पन्न संस्करण बनाए रखा है।

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

उपयोग प्रसंग
अन्य प्रोग्रामर के लिए एक प्रोग्रामर द्वारा विकसित, पैच का उपयोग अक्सर स्रोत कोड को नए संस्करण में अपडेट करने के लिए किया जाता था। इस वजह से, कई लोग पैच को सोर्स कोड के साथ जोड़ने लगे, जबकि पैच वास्तव में किसी भी टेक्स्ट पर लागू किया जा सकता है। पैच की गई फ़ाइलें किसी भी अनावश्यक पाठ को जमा नहीं करती हैं, जिसे कुछ लोग शब्द के अंग्रेजी अर्थ के आधार पर समझते हैं; पैच टेक्स्ट को हटाने के साथ-साथ उसे जोड़ने में भी उतना ही सक्षम है।

यहां वर्णित पैच को पैच (कंप्यूटिंग) के साथ भ्रमित नहीं किया जाना चाहिए, जो कि वैचारिक रूप से समान हो सकता है, प्रोग्राम में शामिल बाइनरी फ़ाइलों को एक नई रिलीज में अपडेट करने के लिए वितरित किया जाता है।

सॉफ़्टवेयर विकास में पैच
पैच में इनपुट के रूप में काम करने वाली भिन्न फ़ाइलें पढ़ने योग्य टेक्स्ट फ़ाइलें हैं, जिसका अर्थ है कि उपयोग से पहले मनुष्यों द्वारा उनकी आसानी से समीक्षा या संशोधित की जा सकती है।

डिफ प्रोग्राम के अलावा, डिफ को अन्य प्रोग्रामों द्वारा भी उत्पादित किया जा सकता है, जैसे तोड़फोड़ (सॉफ्टवेयर), समवर्ती संस्करण सिस्टम, पुनरीक्षण नियंत्रण प्रणाली, मर्क्यूरियल (सॉफ्टवेयर) और गिट (सॉफ्टवेयर)।

पैच समवर्ती संस्करण प्रणाली सहित कई स्रोत नियंत्रण प्रणालियों का महत्वपूर्ण घटक रहा है।

उन्नत अंतर
जब अधिक उन्नत अंतर का उपयोग किया जाता है, तो पैच को उन फ़ाइलों पर भी लागू किया जा सकता है जिन्हें इस बीच संशोधित किया गया है, जब तक कि वे संशोधन पैच में हस्तक्षेप नहीं करते हैं। इसे diff#Context प्रारूप और diff#Unified प्रारूप (जिसे unidiffs के रूप में भी जाना जाता है) का उपयोग करके प्राप्त किया जाता है, जो प्रत्येक परिवर्तन को संदर्भ से घेरता है, जो बदले हुए भाग के ठीक पहले और बाद का पाठ है। पैच इस संदर्भ का उपयोग पैच किए जाने वाले क्षेत्र का पता लगाने के लिए कर सकता है, भले ही इसे फ़ाइल में पहले के परिवर्तनों से विस्थापित किया गया हो, प्रारंभिक बिंदु के रूप में अंतर में पंक्ति संख्याओं का उपयोग करके। इस संपत्ति के कारण, संदर्भ और एकीकृत अंतर कई सॉफ्टवेयर परियोजनाओं को प्रस्तुत करने के लिए पैच का पसंदीदा रूप हैं।

उपरोक्त विशेषताएं डिफ और पैच को खुला स्रोत सॉफ्टवेयर में संशोधनों के आदान-प्रदान के लिए विशेष रूप से लोकप्रिय बनाती हैं। बाहरी लोग सार्वजनिक रूप से उपलब्ध नवीनतम स्रोत कोड को डाउनलोड कर सकते हैं, उसमें संशोधन कर सकते हैं और उन्हें अलग-अलग रूप में विकास टीम को भेज सकते हैं। अंतर का उपयोग करते हुए, विकास टीम के पास उन्हें लागू करने से पहले पैच की प्रभावी ढंग से समीक्षा करने की क्षमता होती है, और उन्हें बाहरी डेवलपर की पहुंच की तुलना में नए कोड बेस पर लागू कर सकती है।

उपयोग उदाहरण
पैच बनाने के लिए, कोई शेल में निम्नलिखित कमांड चला सकता है: पैच लागू करने के लिए, कोई शेल में निम्नलिखित कमांड चला सकता है:

यह पैच को वर्णित निर्दिष्ट फ़ाइलों में परिवर्तन लागू करने के लिए कहता है. उपनिर्देशिकाओं में फ़ाइलों के पैच के लिए अतिरिक्त की आवश्यकता होती है  विकल्प, जहां संख्या 1 है यदि स्रोत वृक्ष की आधार निर्देशिका को अंतर में शामिल किया गया है, और अन्यथा 0 है।

पैच को 'के साथ पूर्ववत या उलटा किया जा सकता है' ' विकल्प:

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

पैच के बंदरगाह
मूल रूप से यूनिक्स और यूनिक्स जैसी प्रणालियों के लिए लिखे गए पैच को माइक्रोसॉफ़्ट विंडोज़  और कई अन्य प्लेटफार्मों पर भी पोर्ट किया गया है। पैच के विंडोज़ पोर्ट GnuWin32 और UnxUtils द्वारा प्रदान किए जाते हैं।

ए  कमांड MSX-DOS संस्करण 2 के लिए ASCII Corporation के MSX-DOS2 टूल्स का भी हिस्सा है।

यह भी देखें

 * पैच (कंप्यूटिंग)
 * रजाई (सॉफ्टवेयर)
 * आरसिंक
 * xdelta
 * यूनिक्स कमांड की सूची
 * आईबीएम मेनफ्रेम यूटिलिटी प्रोग्राम#IEBUPDTE एक मेनफ्रेम पैच प्रोग्राम है, जो लगभग 20 साल पहले (लगभग ~1964) बनाया गया था।

बाहरी संबंध

 * GNU Diffutils (includes diff and patch); Documentation
 * GNU tools for Win32 – Win32 port of tools, including diff and patch