पैच (यूनिक्स): Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Unix utility to apply changes to text files}} {{lowercase|title=patch (Unix)}} {{Infobox software | name = patch | logo = | screenshot = TuxOnIce patching...")
 
No edit summary
 
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Unix utility to apply changes to text files}}
{{Short description|Unix utility to apply changes to text files}}
{{lowercase|title=patch (Unix)}}
 
{{Infobox software
{{Infobox software
| name = patch
| name = पैच
| logo =  
| logo =  
| screenshot = TuxOnIce patching.png
| screenshot = TuxOnIce patching.png
Line 18: Line 18:
| website =  
| website =  
}}
}}
कंप्यूटर टूल पैच एक [[यूनिक्स]] [[कंप्यूटर प्रोग्राम]] है जो टेक्स्ट फ़ाइलों को एक अलग फ़ाइल में निहित निर्देशों के अनुसार अद्यतन करता है, जिसे ''पैच फ़ाइल'' कहा जाता है। पैच फ़ाइल (संक्षेप में ''पैच'' भी कहा जाता है) एक टेक्स्ट फ़ाइल है जिसमें [[अंतर]]ों की एक सूची होती है और मूल और अद्यतन फ़ाइल के साथ संबंधित अंतर प्रोग्राम को तर्क के रूप में चलाकर तैयार किया जाता है। पैच के साथ फ़ाइलों को अपडेट करने को अक्सर ''पैच लगाना'' या बस फ़ाइलों को ''पैच करना'' कहा जाता है।
 
कंप्यूटर टूल '''पैच''' ('''patch''') एक [[यूनिक्स]] [[कंप्यूटर प्रोग्राम]] है जो टेक्स्ट फ़ाइल को एक अलग फ़ाइल में निहित निर्देशों के अनुसार अद्यतन करता है, जिसे ''पैच फ़ाइल'' कहा जाता है। पैच फ़ाइल (संक्षेप में ''पैच'' भी कहा जाता है) एक टेक्स्ट फ़ाइल है जिसमें [[अंतर]] (ओं) की एक सूची होती है और मूल और अद्यतन फ़ाइल के साथ संबंधित अंतर प्रोग्राम को तर्क के रूप में चलाकर तैयार किया जाता है। पैच के साथ फ़ाइल को अपडेट करने को प्रायः ''पैच लगाना'' या बस फ़ाइल को ''पैच करना'' कहा जाता है।


==इतिहास==
==इतिहास==
मूल पैच प्रोग्राम [[लैरी वॉल]] (जिन्होंने [[पर्ल]] प्रोग्रामिंग भाषा बनाई) द्वारा लिखा गया था और पोस्ट किया गया था <code>mod.sources</code><ref>{{cite news |url=http://groups-beta.google.com/group/mod.sources/browse_thread/thread/c5240ceb77b7f586/488b0929254d936a |agency=Google.com at mod.sources |title=patch version 1.3 |author=Larry Wall |date=May 24, 1985}}</ref> (जो बाद में बन गया <code>comp.sources.unix</code>) मई 1985 में.
मूल पैच प्रोग्राम [[लैरी वॉल]] (जिन्होंने [[पर्ल]] प्रोग्रामिंग भाषा बनाई) द्वारा लिखा गया था और पोस्ट किया गया था <code>mod.sources</code><ref>{{cite news |url=http://groups-beta.google.com/group/mod.sources/browse_thread/thread/c5240ceb77b7f586/488b0929254d936a |agency=Google.com at mod.sources |title=patch version 1.3 |author=Larry Wall |date=May 24, 1985}}</ref> (जो बाद में बन गया <code>comp.sources.unix</code>) मई 1985 में.


पैच को XPG4 में जोड़ा गया, जो बाद में [[POSIX]] बन गया।<ref>{{man|cu|patch|SUS}}</ref> वॉल का कोड ओपनबीएसडी में प्रदान किए गए पैच प्रोग्राम का आधार बना हुआ है,<ref>http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ {{Webarchive|url=https://web.archive.org/web/20170607120135/http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ |date=2017-06-07 }} OpenBSD patch source</ref> फ्रीबीएसडी,<ref>{{man|1|FreeBSD}}</ref> और schilytools.<ref>{{cite web | url=https://codeberg.org/schilytools/schilytools/src/branch/master/patch/patch.c | title=Schilytools }}</ref> कहा जाता है कि [[ सॉफ्टवेयर फाउंडेशन खोलें ]], [[खुला समूह]] में विलय हो गया है, ने एक व्युत्पन्न संस्करण बनाए रखा है।{{discuss|wall-vs-gnu}}
पैच को XPG4 में जोड़ा गया, जो बाद में [[POSIX]] बन गया।<ref>{{man|cu|patch|SUS}}</ref> वॉल का कोड ओपनबीएसडी (OpenBSD) में प्रदान किए गए पैच प्रोग्राम का आधार बना हुआ है,<ref>http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ {{Webarchive|url=https://web.archive.org/web/20170607120135/http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ |date=2017-06-07 }} OpenBSD patch source</ref> फ्रीबीएसडी,<ref>{{man|1|FreeBSD}}</ref> और (सछिलयटूल) schilytools.<ref>{{cite web | url=https://codeberg.org/schilytools/schilytools/src/branch/master/patch/patch.c | title=Schilytools }}</ref> कहा जाता है कि [[ सॉफ्टवेयर फाउंडेशन खोलें | ओपन सॉफ्टवेयर फाउंडेशन]], [[खुला समूह|ओपन ग्रुप]] में विलय हो गया है, ने एक व्युत्पन्न संस्करण बनाए रखा है।


जीएनयू प्रोजेक्ट/[[फ्री सॉफ्टवेयर फाउंडेशन]] लैरी वॉल संस्करण से लिए गए अपने पैच का रखरखाव करता है। रिपॉजिटरी जीएनयू डिफ्यूटिल्स से अलग है, लेकिन दस्तावेज़ीकरण को एक साथ प्रबंधित किया जाता है।<ref>{{cite web | url=https://git.savannah.gnu.org/cgit/patch.git/tree/src/patch.c | title=Patch.c\SRC - patch.git - GNU patch }}</ref>
जीएनयू प्रोजेक्ट/[[फ्री सॉफ्टवेयर फाउंडेशन]] लैरी वॉल संस्करण से लिए गए अपने पैच का रखरखाव करता है। रिपॉजिटरी जीएनयू डिफ्यूटिल्स से अलग है, लेकिन दस्तावेज़ीकरण को एक साथ प्रबंधित किया जाता है।<ref>{{cite web | url=https://git.savannah.gnu.org/cgit/patch.git/tree/src/patch.c | title=Patch.c\SRC - patch.git - GNU patch }}</ref>
==उपयोग प्रसंग==
==उपयोग प्रसंग==
अन्य प्रोग्रामर के लिए एक प्रोग्रामर द्वारा विकसित, पैच का उपयोग अक्सर स्रोत कोड को नए संस्करण में अपडेट करने के लिए किया जाता था। इस वजह से, कई लोग पैच को सोर्स कोड के साथ जोड़ने लगे, जबकि पैच वास्तव में किसी भी टेक्स्ट पर लागू किया जा सकता है। पैच की गई फ़ाइलें किसी भी अनावश्यक पाठ को जमा नहीं करती हैं, जिसे कुछ लोग शब्द के अंग्रेजी अर्थ के आधार पर समझते हैं; पैच टेक्स्ट को हटाने के साथ-साथ उसे जोड़ने में भी उतना ही सक्षम है।
अन्य प्रोग्रामर के लिए एक प्रोग्रामर द्वारा विकसित, पैच का उपयोग प्रायः स्रोत कोड को नए संस्करण में अपडेट करने के लिए किया जाता था। इस वजह से, कई लोग पैच को सोर्स कोड के साथ जोड़ने लगे, जबकि पैच वास्तव में किसी भी टेक्स्ट पर लागू किया जा सकता है। पैच की गई फ़ाइलें किसी भी अनावश्यक पाठ को जमा नहीं करती हैं, जिसे कुछ लोग शब्द के अंग्रेजी अर्थ के आधार पर समझते हैं; पैच टेक्स्ट को हटाने के साथ-साथ उसे जोड़ने में भी उतना ही सक्षम है।


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


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


डिफ प्रोग्राम के अलावा, डिफ को अन्य प्रोग्रामों द्वारा भी उत्पादित किया जा सकता है, जैसे [[ तोड़फोड़ (सॉफ्टवेयर) ]], समवर्ती संस्करण सिस्टम, [[पुनरीक्षण नियंत्रण प्रणाली]], [[मर्क्यूरियल (सॉफ्टवेयर)]] और [[गिट (सॉफ्टवेयर)]]।
<nowiki>''डिफ''</nowiki> प्रोग्राम के अलावा, डिफ को अन्य प्रोग्रामों द्वारा भी उत्पादित किया जा सकता है, जैसे [[ तोड़फोड़ (सॉफ्टवेयर) | सबवर्सन/Subversion (सॉफ्टवेयर)]], कंकररेंट [[ तोड़फोड़ (सॉफ्टवेयर) |वर्सन]] सिस्टम (सीवीएस) (समवर्ती संस्करण सिस्टम), [[रीविज़न कण्ट्रोल सिस्टम]] (आरसीएस) [[पुनरीक्षण नियंत्रण प्रणाली|(पुनरीक्षण नियंत्रण प्रणाली]]), [[मर्क्यूरियल (सॉफ्टवेयर)]] और [[गिट (सॉफ्टवेयर)]]।


पैच [[समवर्ती संस्करण प्रणाली]] सहित कई स्रोत नियंत्रण प्रणालियों का महत्वपूर्ण घटक रहा है।
पैच [[ तोड़फोड़ (सॉफ्टवेयर) |कंकररेंट वर्सन सिस्टम]] [[समवर्ती संस्करण प्रणाली|(समवर्ती संस्करण प्रणाली)]] सहित कई स्रोत नियंत्रण प्रणालियों का महत्वपूर्ण घटक रहा है।


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


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


==उपयोग उदाहरण==
==उपयोग उदाहरण==
Line 56: Line 56:
$ patch < mods.diff
$ patch < mods.diff
</syntaxhighlight>
</syntaxhighlight>
यह पैच को वर्णित निर्दिष्ट फ़ाइलों में परिवर्तन लागू करने के लिए कहता है <code>mods.diff</code>. उपनिर्देशिकाओं में फ़ाइलों के पैच के लिए अतिरिक्त की आवश्यकता होती है <code>-p''number''</code> विकल्प, जहां संख्या 1 है यदि स्रोत वृक्ष की आधार निर्देशिका को अंतर में शामिल किया गया है, और अन्यथा 0 है।
यह पैच को वर्णित निर्दिष्ट फ़ाइलों में परिवर्तन लागू करने के लिए कहता है <code>mods.diff</code>. उपनिर्देशिकाओं में फ़ाइलों के पैच के लिए अतिरिक्त की आवश्यकता होती है <code>-p''number''</code> विकल्प, जहां संख्या 1 है यदि ओपन ट्री की आधार निर्देशिका को अंतर में सम्मिलित किया गया है, और अन्यथा 0 है।


पैच को 'के साथ पूर्ववत या उलटा किया जा सकता है'<code>-R</code>' विकल्प:
पैच को 'के साथ पूर्ववत या उलटा किया जा सकता है'<code>-R</code>' विकल्प:
Line 63: Line 63:
$ patch -R < mods.diff
$ patch -R < mods.diff
</syntaxhighlight>
</syntaxhighlight>
कुछ मामलों में जब फ़ाइल उस संस्करण के समान नहीं होती है जिसके विरुद्ध अंतर उत्पन्न किया गया था, तो पैच को साफ़ तरीके से लागू नहीं किया जा सकेगा। उदाहरण के लिए, यदि शुरुआत में पाठ की पंक्तियाँ डाली गई हैं, तो पैच में संदर्भित पंक्ति संख्याएँ गलत होंगी। पैच किए जाने वाले टेक्स्ट को स्थानांतरित करने के लिए आस-पास की पंक्तियों को देखकर पैच इससे उबरने में सक्षम है। यह तब भी ठीक हो जाएगा जब संदर्भ की रेखाएं (संदर्भ और एकीकृत अंतर के लिए) बदल दी जाएंगी; इसे फ़ज़ के रूप में वर्णित किया गया है।
कुछ परिस्थितियों में जब फ़ाइल उस संस्करण के समान नहीं होती है जिसके विरुद्ध अंतर उत्पन्न किया गया था, तो पैच को साफ़ तरीके से लागू नहीं किया जा सकेगा। उदाहरण के लिए, यदि शुरुआत में पाठ की पंक्तियाँ डाली गई हैं, तो पैच में संदर्भित पंक्ति संख्याएँ गलत होंगी। पैच किए जाने वाले टेक्स्ट को स्थानांतरित करने के लिए आस-पास की पंक्तियों को देखकर पैच इससे उबरने में सक्षम है। यह तब भी ठीक हो जाएगा जब संदर्भ की रेखाएं (संदर्भ और एकीकृत अंतर के लिए) बदल दी जाएंगी; इसे फ़ज़ के रूप में वर्णित किया गया है।


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


<code>patch</code> कमांड [[MSX-DOS]] संस्करण 2 के लिए [[ASCII Corporation]] के MSX-DOS2 टूल्स का भी हिस्सा है।<ref>[https://archive.org/details/MSXDOS2TOOLS MSX-DOS2 Tools User's Manual by ASCII Corporation]</ref>
एक <code>patch</code> कमांड [[MSX-DOS]] संस्करण 2 के लिए [[ASCII Corporation|ASCII कॉर्पोरेशन]] के MSX-DOS2 टूल्स का भी हिस्सा है।<ref>[https://archive.org/details/MSXDOS2TOOLS MSX-DOS2 Tools User's Manual by ASCII Corporation]</ref>
 
 
==यह भी देखें==
==यह भी देखें==
* पैच (कंप्यूटिंग)
* पैच (कंप्यूटिंग)
* [[रजाई (सॉफ्टवेयर)]]
* [[रजाई (सॉफ्टवेयर)|क्विल्ट (सॉफ्टवेयर)]]
* आरसिंक
* आरसिंक
* [[ xdelta ]]
* [[ xdelta | एक्सडेल्टा (xdelta)]]
* [[यूनिक्स कमांड की सूची]]
* [[यूनिक्स कमांड की सूची]]
* आईबीएम मेनफ्रेम यूटिलिटी प्रोग्राम#IEBUPDTE एक मेनफ्रेम पैच प्रोग्राम है, जो लगभग 20 साल पहले (लगभग ~1964) बनाया गया था।
* आईबीएम मेनफ्रेम यूटिलिटी प्रोग्राम आईईबीयूपीडीटीई (IEBUPDTE) एक मेनफ्रेम पैच प्रोग्राम है, जो लगभग 20 साल पहले (लगभग ~1964) बनाया गया था।


==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}
==बाहरी संबंध==
==बाहरी संबंध==
{{Wikibooks|Guide to Unix|Commands}}
*[https://www.gnu.org/software/diffutils/ GNU Diffutils] (includes diff and patch); [https://www.gnu.org/software/diffutils/manual/html_node/Merging-with-patch.html#Merging-with-patch Documentation]
*[https://www.gnu.org/software/diffutils/ GNU Diffutils] (includes diff and patch); [https://www.gnu.org/software/diffutils/manual/html_node/Merging-with-patch.html#Merging-with-patch Documentation]
*[http://gnuwin32.sourceforge.net/ GNU tools for Win32]{{spaced ndash}}Win32 port of tools, including diff and patch
*[http://gnuwin32.sourceforge.net/ GNU tools for Win32]{{spaced ndash}}Win32 port of tools, including diff and patch
Line 98: Line 93:
   |postscript=none}}
   |postscript=none}}


{{Unix commands}}
[[Category:1984 सॉफ्टवेयर]]
[[Category: 1984 सॉफ्टवेयर]] [[Category: पैच उपयोगिताएँ]] [[Category: योजना 9 आदेश]] [[Category: यूनिक्स SUS2008 उपयोगिताएँ]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
 
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 26/07/2023]]
[[Category:Created On 26/07/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Webarchive template wayback links]]
[[Category:पैच उपयोगिताएँ]]
[[Category:यूनिक्स SUS2008 उपयोगिताएँ]]
[[Category:योजना 9 आदेश]]

Latest revision as of 15:58, 22 August 2023

पैच
Original author(s)Larry Wall
Developer(s)Paul Eggert, Wayne Davison, David MacKenzie, Andreas Grünbacher
Initial releaseMay 24, 1985; 39 years ago (1985-05-24)
Operating systemUnix and Unix-like, Plan 9, MSX-DOS, Microsoft Windows
PlatformCross-platform
TypeCommand

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

इतिहास

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

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

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

उपयोग प्रसंग

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

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

सॉफ़्टवेयर विकास में पैच

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

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

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

उन्नत अंतर

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

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

उपयोग उदाहरण

पैच बनाने के लिए, कोई शेल में निम्नलिखित कमांड चला सकता है:

$ diff -u oldFile newFile > mods.diff  # -u tells diff to output unified diff format

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

$ patch < mods.diff

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

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

$ patch -R < mods.diff

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

पैच के पोर्ट

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

एक patch कमांड MSX-DOS संस्करण 2 के लिए ASCII कॉर्पोरेशन के MSX-DOS2 टूल्स का भी हिस्सा है।[7]

यह भी देखें

संदर्भ

  1. Larry Wall (May 24, 1985). "patch version 1.3". Google.com at mod.sources.
  2. patch – Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Group
  3. http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ Archived 2017-06-07 at the Wayback Machine OpenBSD patch source
  4. FreeBSD – Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Group
  5. "Schilytools".
  6. "Patch.c\SRC - patch.git - GNU patch".
  7. MSX-DOS2 Tools User's Manual by ASCII Corporation

बाहरी संबंध