हिन्दी

टेक्स्ट और रोजमर्रा के टूल · टेक्स्ट टूलकिट

पंक्ति-आधारित पाठ अंतर समझाया गया: क्यों एक बदला हुआ शब्द पूरी पंक्ति को चिह्नित करता है

· यह काम किस प्रकार करता है

पाठ-अंतर दस्तावेज़-तुलना संपादन

दो खंड सूचियाँ पंक्ति द्वारा संरेखित, एक हटाई गई पंक्ति और एक जोड़ी गई पंक्ति हाइलाइट की गई
मूल ToolAcre वेक्टर चित्रण

यह बताता है कि एक पंक्ति-आधारित अंतर क्या तुलना करता है, यह एक-शब्द संपादन को प्रतिस्थापित पंक्ति के रूप में क्यों रिपोर्ट करता है, और दो पाठ कैसे तैयार करें ताकि तुलना इस बात पर प्रकाश डाल सके कि वास्तव में क्या बदल गया है।

वह अंतर जो कहता है कि सब कुछ बदल गया - कैसे एक पुनः प्रवाहित पैराग्राफ एक संपादन को दर्जनों ध्वजांकित पंक्तियों में बदल देता है

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

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

एक रेखा अंतर क्या तुलना करता है - इकाइयों के रूप में संपूर्ण रेखाएँ, समानता से मेल खाती हैं, बीच में सम्मिलन और विलोपन के साथ

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

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

क्यों एक शब्द एक पूरी पंक्ति को चिह्नित करता है - तुलना की इकाई पंक्ति है, इसलिए कोई भी अंतर इसे प्रतिस्थापित कर देता है

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

उन आसन्न पंक्तियों को एक साथ पढ़ें। उनकी साझा शब्दावली किसी व्यक्ति को संपादित शब्द का पता लगाने में मदद करती है, लेकिन स्रोत में दिखाया गया एल्गोरिदम उनके अंदर के पात्रों को उजागर नहीं करता है। यह अंतर बताता है कि परिणाम व्यापक दिखने के साथ-साथ सटीक क्यों हो सकता है: इसकी सबसे छोटी रिपोर्ट करने योग्य तुलना इकाई एक पंक्ति है, भले ही संपादन कितना भी छोटा क्यों न हो।

इस कार्यान्वयन में एक शब्द एक हटाई गई पंक्ति और एक अतिरिक्त पंक्ति क्यों उत्पन्न करता है

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

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

पाठों को अच्छी तरह से भिन्न करने के लिए तैयार करना - प्रति पंक्ति एक वाक्य या आइटम, छंटनी की गई खाली जगह और सुसंगत पंक्ति अंत

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

रूपरेखा सुसंगत पंक्ति अंत की मांग करती है, लेकिन `toLines` पहले से ही CRLF, LF और एक अकेले CR को विभाजक के रूप में स्वीकार करता है। अधिक महत्वपूर्ण स्थिरता अर्थ संबंधी है: समतुल्य आइटम समान स्थानों पर शुरू और समाप्त होने चाहिए। पेज की चौड़ाई पर मैन्युअल रैपिंग से बचें, क्योंकि बदला हुआ मार्जिन बदली हुई सामग्री के रूप में सामने आ सकता है।

स्थिर लाइन इकाइयाँ तैयार करें; मिश्रित CRLF, LF और अकेला CR पहले से ही स्वीकार किए जाते हैं

मान लीजिए कि पुरानी सूची में तीन अलग-अलग पंक्तियाँ हैं: "1। शुक्रवार तक वितरित करें।", "2। खरीदार रिकॉर्ड का निरीक्षण कर सकता है।", और "3। भुगतान 30 दिनों में देय है।" संशोधन केवल मध्य पंक्ति को "2" में बदलता है। क्रेता को रिकॉर्ड का निरीक्षण करना होगा। तुलना चलाने से पहले तीनों खंडों को अपनी-अपनी पंक्तियों में रखें।

पहली और तीसरी पंक्तियाँ समान रूप से स्थिर रहती हैं। पुराना मध्य खंड हटा हुआ प्रतीत होता है और संशोधित मध्य खंड जोड़ा हुआ दिखाई देता है, जिससे व्यवस्थापक के पास समीक्षा के लिए एक केंद्रित जोड़ी रह जाती है। यदि समान खंडों को पुनः प्रवाहित गद्य के रूप में चिपकाया जाता है, तो एक रैपिंग अंतर उन एंकरों को तोड़ सकता है और स्पष्ट परिवर्तन सेट को बड़ा कर सकता है।

इसमें क्या शामिल नहीं है - तीन-तरफ़ा मर्ज, स्थानांतरित-ब्लॉक का पता लगाना और स्वरूपित दस्तावेज़ों का अंतर

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

स्वरूपित दस्तावेज़ एक और सीमा प्रस्तुत करते हैं। फ़ॉन्ट, ट्रैक किए गए परिवर्तन, तालिकाएँ, टिप्पणियाँ और लेआउट `diffLines` को दिए गए सादे स्ट्रिंग में प्रदर्शित नहीं किए जाते हैं। औपचारिक समीक्षा के लिए मूल को बनाए रखते हुए, पहले प्रासंगिक पाठ को निकालें और उसकी संरचना करें। एक उपयोगी पाठ अंतर दस्तावेज़ नियंत्रण को पूरक करता है; यह उन्हें प्रतिस्थापित नहीं करता.

टेकअवे - टेक्स्ट टूलकिट का अंतर डिज़ाइन द्वारा लाइन-आधारित है; इनपुट तैयार करें और यह दिखाता है कि कौन से आइटम बदले गए हैं

एक पंक्ति अंतर सबसे अधिक जानकारीपूर्ण होता है जब प्रत्येक पंक्ति में एक समीक्षा योग्य निर्णय होता है। ToolAcre सटीक पंक्तियों को संरेखित करता है, उनके क्रम को संरक्षित करता है, और बेजोड़ सामग्री को जोड़ने या हटाने के रूप में रिपोर्ट करता है। वह डिज़ाइन पूर्वानुमानित है: एक-शब्द का संपादन इसकी पूरी पंक्ति को प्रभावित करता है, जबकि इसके चारों ओर समान पंक्तियाँ एंकर प्रदान करती हैं जो परिणाम को संक्षिप्त रखती हैं।

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