डेवलपर टूल · पाठ तुलना
पंक्ति-दर-पंक्ति पाठ अंतर में 'व्हाट्सएप को अनदेखा करें' वास्तव में क्या अनदेखा करता है
· यह काम किस प्रकार करता है
पाठ-अंतर डेवलपर-वर्कफ़्लो खाली स्थान के
व्हाइटस्पेस के प्रकारों को तोड़ता है, तुलना करके इंडेंटेशन से लेकर आंतरिक रन तक सामान्य किया जा सकता है, और चेतावनी देता है कि व्हाइटस्पेस का क्या अर्थ है और इसे नजरअंदाज नहीं किया जाना चाहिए।
प्रत्येक पंक्ति बदल गई, लेकिन वास्तव में कुछ भी नहीं हुआ - टैब से रिक्त स्थान पर फिर से इंडेंट की गई फ़ाइल के साथ खुलता है जो मतभेदों की दीवार के रूप में दिखाई देता है
एक फ़ॉर्मेटर चार-स्पेस इंडेंटेशन को दो स्पेस में बदलता है और एक लाइन डिफ पूरी फ़ाइल को बदले हुए रूप में पेंट करता है। परिवर्तन दृश्य शोर हो सकता है, इसलिए एक रिक्त स्थान-असंवेदनशील दृश्य समीक्षक को वास्तविक संपादन ढूंढने में मदद कर सकता है। लेकिन "व्हाट्सएप के बिना समान पाठ" "समान प्रोग्राम" के समान नहीं है। किसी कॉन्फ़िगरेशन या स्रोत फ़ाइल को अनुमोदित करने से पहले सामान्य और सामान्यीकृत दृश्यों की एक साथ तुलना करें।
चार प्रकार के व्हाइटस्पेस अंतर - अग्रणी इंडेंटेशन, अनुगामी रिक्त स्थान, आंतरिक रन और रिक्त रेखाओं को अलग करते हैं, क्योंकि प्रत्येक एक अलग टूल या आदत के कारण होता है
कई स्थानों पर रिक्त स्थान में परिवर्तन होते हैं. लीडिंग इंडेंटेशन अक्सर फ़ॉर्मेटिंग से आता है; Copy/paste; से अनुगामी रिक्त स्थान, एक पंक्ति के अंदर बार-बार रिक्त स्थान या टैब शब्दों या स्तंभों को अलग कर सकते हैं; एक खाली रेखा ब्लॉकों को विभाजित कर सकती है। ToolAcre का इग्नोर व्हाइटस्पेस विकल्प प्रत्येक पंक्ति को ट्रिम करता है और तुलना के लिए व्हाइटस्पेस के प्रत्येक आंतरिक रन को एक स्थान पर संक्षिप्त कर देता है। यह केवल सभी रिक्त स्थान को नहीं हटाता है या विभिन्न पंक्ति गणनाओं को समान नहीं मानता है: दो रिक्त पंक्तियाँ दो तुलना इकाइयाँ बनी रहती हैं जब तक कि कोई अन्य ऑपरेशन उन्हें हटा नहीं देता है।
तुलना करने से पहले सामान्यीकरण कैसे होता है - यह बताता है कि विकल्प प्रत्येक पंक्ति को मिलान के लिए एक विहित रूप में बदल देता है जबकि आपका मूल पाठ वही है जो आप पढ़ते हैं
मिलान से पहले मूल पाठ से एक लाइन कुंजी की गणना की जाती है: ट्रिम() अग्रणी/trailing व्हाइटस्पेस को हटा देता है और एक रेगुलर एक्सप्रेशन आंतरिक रन को एक स्पेस से बदल देता है। भिन्न एल्गोरिथ्म कुंजियों की तुलना करता है लेकिन मूल पाठ को प्रदर्शित पंक्तियों में रखता है। इसकी LCS तालिका बनाने से पहले सामान्य उपसर्गों और प्रत्ययों को हटा दिया जाता है, इसलिए बड़े दस्तावेज़ों में छोटे संपादनों के लिए हर पंक्ति की एक दूसरे से तुलना करने की आवश्यकता नहीं होती है। एक 2,000 भिन्न-रेखा कैप है, क्योंकि एक गतिशील-प्रोग्रामिंग तालिका दोनों तरफ की लंबाई के साथ बढ़ती है।
कार्यान्वित उदाहरण: एक पुन: इंडेंटेड पायथन फ़ंक्शन और एक YAML फ़ाइल - पायथन दृश्य को साफ़ करने का विकल्प दिखाता है, फिर एक YAML इंडेंटेशन परिवर्तन को छुपाता है जो वास्तव में दस्तावेज़ की संरचना को बदल देता है
एक पायथन फ़ंक्शन की कल्पना करें जिसका संपूर्ण शरीर एक ही नेस्टिंग स्तर पर रहते हुए चार स्थानों से दो स्थानों में बदल जाता है। इंडेंटेशन को अनदेखा करने से फ़ॉर्मेटिंग शोर छिप सकता है। YAML में, services.web के नीचे से एक कुंजी को सेवाओं के नीचे ले जाने से इसकी मूल मैपिंग बदल जाती है, भले ही व्हाइटस्पेस ट्रिम होने के बाद प्रत्येक पंक्ति के अक्षर समान हों। दोनों स्निपेट पर विकल्प चलाएँ: पायथन दृश्य की समीक्षा करना आसान हो सकता है, जबकि डेटा ट्री बदलने के बावजूद YAML परिवर्तन गायब हो सकता है। इंडेंटेशन-संवेदनशील प्रारूपों को मंजूरी देने के लिए कभी भी अकेले व्हाइटस्पेस-असंवेदनशील आउटपुट का उपयोग न करें।
जब व्हाईटस्पेस डेटा होता है - उन प्रारूपों को सूचीबद्ध करता है जहां रिक्त स्थान का अर्थ होता है: YAML, मेकफ़ाइल्स, मार्कडाउन कोड ब्लॉक, निश्चित-चौड़ाई निर्यात और स्ट्रिंग अक्षर
रिक्त स्थान YAML इंडेंटेशन, मेकफ़ाइल रेसिपी, मार्कडाउन कोड ब्लॉक और निश्चित-चौड़ाई निर्यात में डेटा हैं। स्ट्रिंग अक्षर के अंदर, एकाधिक रिक्त स्थान बदलने से उपयोगकर्ता-दृश्यमान टेक्स्ट या हस्ताक्षरित या हैश किए गए मान को बदल सकते हैं। यहां तक कि आम तौर पर लचीले स्वरूपण वाले कोड में भी ऐसे संदर्भ होते हैं जहां व्हाइटस्पेस महत्वपूर्ण होता है: यहां पायथन ब्लॉक और शेल-दस्तावेज़ स्पष्ट उदाहरण हैं। विकल्प उन संदर्भों का अनुमान नहीं लगा सकता, क्योंकि यह भाषा व्याकरण को नहीं, बल्कि सामान्य पंक्तियों को देखता है। इसे तभी चुनें जब आप तुलना की जा रही फ़ाइल को समझ लें।
व्हॉट्सएप और केस विकल्पों का संयोजन - वर्णन करता है कि कैसे दोनों को सक्षम करने से समान क्रम में समान अक्षरों की तुलना सीमित हो जाती है और यह क्या छिपाता है
इग्नोर व्हॉट्सएप को इग्नोर केस के साथ संयोजित करने से उन पंक्तियों का मिलान संकीर्ण हो जाता है जिनके शेष अक्षर और विराम चिह्न केस या रिक्ति की परवाह किए बिना सहमत होते हैं। यह फ़ॉर्मेटिंग-भारी दस्तावेज़ को शांत बना सकता है, लेकिन यह बदले हुए केस-संवेदी पहचानकर्ता, हेडर कुंजी या फ़ाइल सिस्टम पथ को भी छिपा सकता है। ToolAcre तुलना कुंजी को केवल तभी छोटा करता है जब आप उस दूसरे विकल्प को चालू करते हैं; यह अभी भी मूल पंक्ति पाठ प्रदर्शित करता है। एक समय में एक विकल्प बदलें ताकि आप देख सकें कि प्रत्येक में से कौन सा परिवर्तन हटा दिया गया है।
इसमें क्या शामिल नहीं है - विकल्प सामान्यीकरण के बाद लाइनों की तुलना करता है; यह अनुच्छेदों को दोबारा प्रवाहित नहीं करता, स्थानांतरित ब्लॉकों का पता नहीं लगाता या समृद्ध दस्तावेज़ों में फ़ॉर्मेटिंग की तुलना नहीं करता
यह सुविधा पैराग्राफों को दोबारा प्रवाहित नहीं करती है, स्थानांतरित ब्लॉकों का पता नहीं लगाती है, HTML रेंडरिंग की तुलना नहीं करती है या यह तय नहीं करती है कि दो प्रोग्राम एएसटी समकक्ष हैं या नहीं। ToolAcre का अंतर सामान्य-उपसर्ग/suffix ट्रिमिंग के साथ लाइन-आधारित LCS गतिशील प्रोग्रामिंग है, न कि कुछ सामान्य अंतर ट्यूटोरियल में वर्णित मायर्स एल्गोरिदम। बड़ी चिपकाई गई फ़ाइलों पर यह एक अनबाउंड मैट्रिक्स आवंटित करने के बजाय रुक जाएगा। संरचनात्मक दावों के लिए भाषा-जागरूक पार्सर या संस्करण-नियंत्रण समीक्षा का उपयोग करें।
टेकअवे: इसे टॉगल करें, इसे डिफॉल्ट न करें - दोनों तुलनाओं को चलाने की अनुशंसा करता है और दिखाता है कि कैसे ToolAcre की टेक्स्ट तुलना आपको टेक्स्ट की एक ही जोड़ी के लिए व्हाइटस्पेस विकल्प को चालू और बंद करने देती है
टॉगल व्हाइटस्पेस को एक दृश्य के रूप में अनदेखा करें, डिफ़ॉल्ट सत्य नहीं। टेक्स्ट तुलना ब्राउज़र में आपके द्वारा पेस्ट की गई सभी चीज़ों को रखती है, जिससे आप अनुबंध या कॉन्फ़िगरेशन फ़ाइल अपलोड किए बिना समान संशोधनों के दोनों दृश्यों की तुलना कर सकते हैं। यदि कोई परिवर्तन सामान्यीकृत दृश्य में गायब हो जाता है, तो यह निर्णय लेने से पहले कि यह हानिरहित था, पूछें कि क्या अंतर्निहित प्रारूप व्हाइटस्पेस को अर्थ देता है।