3 पॉइंट द्वारा GN⁺ 2024-03-22 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Difftastic संरचनात्मक diff टूल

  • Difftastic एक syntax-aware CLI diff टूल है, जो फ़ाइलों की तुलना line-by-line के बजाय syntax के आधार पर करता है।
  • यह इंसानों के लिए पढ़ने में आसान और सटीक अंतर दिखाता है।

वास्तव में बदले गए हिस्सों को समझना

  • Difftastic, code को parse करने के लिए tree-sitter का उपयोग करता है।
  • line-based text diff के विपरीत, यह समझता है कि अंदरूनी representation बदला नहीं है।

formatting बदलावों को नज़रअंदाज़ करना

  • जब code formatter किसी चीज़ को कई लाइनों में बाँटने का फैसला करता है, तब यह केवल वास्तव में बदले गए हिस्से ही दिखाता है।

wrapping बदलावों को विज़ुअलाइज़ करना

  • यदि wrapper जोड़ा गया हो, तो Difftastic delimiters को सटीक रूप से match करता है।
  • अंदर की सामग्री बदलने पर भी यह जोड़े गए wrapper को दिखा सकता है।

वास्तविक line numbers

  • यह फ़ाइल के वास्तविक line numbers को बदलाव से पहले और बाद दोनों में दिखाता है।

60-सेकंड डेमो

प्रोग्रामिंग भाषाओं का समर्थन

  • C++, C#, Clojure, Dart, Erlang आदि कई भाषाओं का समर्थन।
  • समर्थित भाषाओं की विस्तृत सूची manual में देखी जा सकती है।

फ़ाइल फ़ॉर्मैट का समर्थन

  • HCL, HTML, JSON, YAML आदि कई फ़ाइल फ़ॉर्मैट का समर्थन।
  • समर्थित फ़ाइल फ़ॉर्मैट की विस्तृत सूची manual में देखी जा सकती है।

Git के साथ संगत

  • Git configuration के निर्देश manual में देखे जा सकते हैं।

पूरी तरह open source

  • Difftastic MIT license के तहत उपलब्ध है।
  • इसे डाउनलोड, संशोधित और दोस्तों के साथ साझा किया जा सकता है।

निर्माता

  • इसे Wilfred Hughes ने Emacs और coffee के साथ बनाया।

GN⁺ की राय

  • Difftastic code के संरचनात्मक अंतर को समझकर developers को बदलावों को अधिक स्पष्ट रूप से समझने में मदद करता है।
  • पारंपरिक line-based diff टूल्स की तुलना में, Difftastic code syntax को समझने और formatting बदलावों को नज़रअंदाज़ करने जैसी क्षमताओं के कारण अधिक परिष्कृत तुलना उपलब्ध कराता है।
  • एक open source टूल होने के नाते, इसमें community contributions के ज़रिए लगातार सुधार की संभावना है, और users अपनी ज़रूरत के अनुसार इसे स्वतंत्र रूप से modify और extend कर सकते हैं।
  • इसी तरह की सुविधाएँ देने वाले अन्य टूल्स में Git का built-in git diff या JetBrains के IntelliJ IDEA जैसे IDEs के built-in comparison टूल शामिल हैं, लेकिन Difftastic syntax-based comparison का एक अनोखा तरीका पेश करता है।
  • Difftastic अपनाने से पहले समर्थित प्रोग्रामिंग भाषाओं और फ़ाइल फ़ॉर्मैट की जाँच करना उपयोगी है, और टीम के भीतर टूल के उपयोग पर सहमति की ज़रूरत हो सकती है। इस टूल के उपयोग से code review की दक्षता बढ़ सकती है और सहयोग की प्रक्रिया में गलतफ़हमियाँ कम हो सकती हैं।

1 टिप्पणियां

 
GN⁺ 2024-03-22
Hacker News राय
  • Tree-sitter आधारित तकनीक का परिचय

    • Tree-sitter कोड को AST(Abstract Syntax Tree, अमूर्त सिंटैक्स ट्री) में बदलता है और इसे editor या diff tool जैसे clients को देने के लिए एक standard interface प्रदान करता है.
    • इसके जरिए tools को दर्जनों भाषाओं को सीधे support करने की ज़रूरत नहीं होती; Tree-sitter को support करके वे अपने-आप Tree-sitter द्वारा समर्थित सभी भाषाओं को संभाल सकते हैं.
    • नई भाषा विकसित करते समय अगर Tree-sitter parser बनाया जाए, तो Tree-sitter को support करने वाले सभी tools उस भाषा को support करने लगते हैं.
    • यह नवाचार कई भाषाओं को support करने वाले tools के development में दोहराव वाले काम को कम कर रहा है और बेहतर tool ecosystem बना रहा है.
  • Rust projects और tools को update करने के तरीके

    • यह दिखाया गया है कि Rust-आधारित projects को cargo के जरिए कैसे install और update किया जा सकता है.
    • mise-en-place, asdf का एक तेज़ और flexible विकल्प है.
    • zoxide, cd command का विकल्प है, जो उपयोगकर्ता द्वारा खोली गई directories को याद रखता है और partial match search के जरिए तेज़ी से move करने देता है.
    • dust, du का एक पूरक tool है, जो सबसे ज़्यादा disk space इस्तेमाल करने वाली directories दिखाता है.
  • Difftastic के उपयोग का अनुभव और राय

    • Difftastic इस्तेमाल करने का अनुभव साझा करते हुए कहा गया कि इसके बाद दूसरे diff tools इस्तेमाल करते समय असुविधा महसूस होती है.
    • ऐसे 'semantic' diff tool की संभावना पर भी बात की गई जो syntax बदलने पर भी अर्थ समान रहने वाली स्थितियों की तुलना कर सके.
  • Difftastic की सुविधा

    • Difftastic की उस सुविधा पर ज़ोर दिया गया जो वास्तविक files के line numbers दिखाती है, और कहा गया कि git diff के साथ यह बहुत उपयोगी है.
  • संबंधित tool: diff2html

    • diff2html एक ऐसा tool है जो CLI(Command Line Interface) के जरिए HTML format में diff को browser tab में दिखाता है.
  • Augeas library के उपयोग का अनुभव

    • Augeas library का उपयोग करके configuration files के अंतर पहचानने और उपयोगकर्ता को syntax-सेंसिटिव न होने वाली सूक्ष्म allowlist लिखने देने का अनुभव साझा किया गया.
  • Semantic Merge से तुलना

    • Semantic Merge open source नहीं था, लेकिन Difftastic open source है और बेहतर diff प्रदान करता है.
    • यह जिज्ञासा भी जताई गई कि क्या Difftastic को merge feature तक बढ़ाने की कोई योजना है.
  • icdiff पर वापसी

    • Difftastic आज़माने के बाद, बिना बदले हिस्सों पर अजीब formatting लागू होने जैसी समस्याओं के कारण icdiff पर वापस लौटने की राय दी गई.
  • Difftastic की दृश्य संबंधी समस्याएँ

    • बड़े XML files की जाँच करते समय बदली गई lines और attributes को दृश्य रूप से अलग पहचानना मुश्किल होने की बात कही गई, और style बदलने के तरीके पर documentation की ज़रूरत बताई गई.
  • Difftastic के install size

    • Arch Linux package का size 7MB है, लेकिन install होने पर यह 80MB तक बढ़ जाता है, और difft binary खुद 78MB की है.
    • LZ4 compression इस्तेमाल करने वाले ZFS dataset में यह 17MB दिखता है, और यह सवाल उठाया गया कि binary में compress होने योग्य content शामिल क्यों नहीं किया गया.