Text Diff
दो text blocks की तुलना करें और line-by-line additions, removals, और अपरिवर्तित context देखें। Side-by-side या unified view।
JXXR1 द्वारा बनाया गया · ♥ स्पॉन्सर करें · ☕ मुझे coffee दिलाएं
यह किसके लिए है?
Text के एक टुकड़े के दो versions की तुलना करना — एक paragraph, एक config file, एक SQL query, एक list — और देखना कि कौन सी lines जोड़ी गईं, हटाई गईं, या नहीं छुई गईं। तब भी जब आपके पास git diff हाथ में न हो या text version control में न हो। Output वही line-level diff है जो आप code review में देखेंगे: additions के लिए हरा, removals के लिए लाल, unchanged context के लिए सादा।
कब इस्तेमाल करें
- "एक जैसे दिखने वाले" दो emails, contracts, या pasted blobs के बीच क्या अलग है यह पहचानना।
- दो environments (staging vs prod) में config files या environment variables की तुलना करना।
- Word/Docs में किसी और द्वारा edit किए गए copy के परिवर्तनों की समीक्षा करना।
- दो query results, log snippets, या JSON blobs को diff करना (canonicalize करने के लिए पहले JSON Formatter का इस्तेमाल करें)।
- Commit करने से पहले एक search-and-replace पर त्वरित sanity check।
Side-by-side vs unified
- Side-by-side — छोटे बदलावों को line-by-line scan करना आसान; original बाईं ओर, नया version दाईं ओर।
- Unified —
git diffoutput के करीब; share करने या print करने के लिए बेहतर, और जब बदलाव विरल हों तो follow करना आसान।
आम गलतियाँ
- यह एक line diff है, word diff नहीं। एक लंबी line के बीच में एक character बदला तो पूरी line को बदला हुआ चिन्हित करता है। Paragraphs की prose-level diffing के लिए, आप एक ऐसा tool चाह सकते हैं जो words में tokenize करता है।
- "Ignore whitespace" केवल तुलना को प्रभावित करता है, display को नहीं। ऐसी lines जो केवल trailing spaces या indentation में अलग हैं unchanged column में चली जाती हैं, पर मूल whitespace अभी भी दिखाया जाता है।
- "Ignore case" इसी तरह। "TODO" और "todo" बराबर तुलना करते हैं, पर मूल casing render होती है।
- क्रम मायने रखता है। यदि आप दो lines की अदला-बदली करते हैं, diff दोनों को removed-and-re-added के रूप में दिखाता है, "moved" pair के रूप में नहीं। कोई move detection नहीं है।
- बड़े inputs (10k+ lines) धीमे हो सकते हैं। LCS algorithm O(m·n) है — सामान्य files के लिए ठीक, बहुत बड़े के लिए धीमा। एक बार में छोटे chunks diff करें।
- Trailing newlines एक line के रूप में गिने जाते हैं। दो inputs जो केवल इस बात में अलग हैं कि क्या वे newline से समाप्त होते हैं, एक trailing addition या removal दिखाएंगे।