इस प्रोजेक्ट के बारे में

`git-stats` एक कमांड-लाइन टूल है जो Rust में लिखा गया है और `git log` जानकारी को पार्स करके एकत्रित कमिट आँकड़े उत्पन्न करता है। यह git के शुद्ध Rust कार्यान्वयन `gitoxide` का उपयोग करके सीधे रिपॉजिटरी पढ़ता है, जिससे git बाइनरी की आवश्यकता नहीं होती। ## विशेषताएँ - **एकत्रित आँकड़े**: लेखक द्वारा कमिट्स का सारांश, जिसमें कमिट्स की संख्या, बदली फ़ाइलें, सम्मिलन, विलोपन और शुद्ध पंक्ति परिवर्तन शामिल हैं। - **संशोधन श्रेणियाँ**: एकल संशोधन, `A..B`, और `A...B` श्रेणियों का समर्थन करता है, जिनमें अंतिम बिंदु refs, छोटे हैश, `@{n}`, आदि के रूप में निर्दिष्ट होते हैं। - **फ़िल्टरिंग**: लेखक (regex), दिनांक सीमा (`--since`, `--until`), और संशोधन श्रेणी द्वारा सीमित करें। - **समीक्षा ट्रैकिंग**: वैकल्पिक रूप से `Acked-by`, `Tested-by`, और `Reviewed-by` git ट्रेलरों के आधार पर समीक्षक/परीक्षक दिखाता है। - **सॉर्टिंग**: किसी भी कॉलम (लेखक, कमिट्स, फ़ाइलें, सम्मिलन, विलोपन, शुद्ध) द्वारा आरोही या अवरोही क्रम में सॉर्ट करें। - **ईमेल प्रदर्शन**: वैकल्पिक रूप से लेखक के ईमेल पते दिखाएं। ## स्थापना crates.io से स्थापित करें: ``` cargo install git-stats --locked ``` या पूर्व-निर्मित बाइनरी के लिए `cargo-binstall` के साथ: ``` cargo binstall git-stats ``` Arch Linux पर, AUR पैकेज `git-stats` (स्रोत) या `git-stats-bin` (पूर्व-निर्मित) का उपयोग करें। `mise` के साथ, चेकसम और SLSA प्रोवेंस सत्यापन के साथ पूर्व-निर्मित बाइनरी स्थापित करें: ``` mise use -g github:lukehsiao/git-stats ``` ## उपयोग ``` Usage: git-stats [OPTIONS] [revision-range] Arguments: [revision-range] Show only commits in the specified revision range [default: HEAD] Options: -e, --email Show the email address of each author -r, --reviews Show who reviewed/tested commits based on git trailers -s, --sort <SORT> What column to sort by [default: commits] [possible values: author, commits, files, insertions, deletions, net] --reverse Reverse the sorting order -a, --author <AUTHOR> Limit commits to those matching a regex pattern --since <SINCE> Limit to commits more recent than a date --until <UNTIL> Limit to commits older than a date -h, --help Print help -V, --version Print version ``` उदाहरण आउटपुट: ``` $ git stats -r origin..HEAD Author Commits Changed Files Insertions Deletions Net Δ Luke Hsiao 67 117 +2616 -1126 +1490 dependabot[bot] 31 62 +203 -267 -64 Total 98 179 +2819 -1393 +1426 Reviewer/Tester Commits Luke Hsiao 1 ``` ## नोट्स - **संशोधन श्रेणियाँ**: केवल सरल रूपों का समर्थन किया जाता है; विदेशी gitrevisions(7) सिंटैक्स की व्याख्या नहीं की जाती। - **दिनांक फ़िल्टरिंग**: ISO 8601, RFC 2822, यूनिक्स टाइमस्टैम्प, और "2 weeks ago" जैसी सापेक्ष तिथियाँ स्वीकार करता है। फ़िल्टरिंग कमिटर दिनांक पर होती है। - **लेखक मिलान**: `git log --author` के विपरीत, जो कच्चे हेडर का उपयोग करता है, mailmap-हल किए गए लेखक के विरुद्ध मिलान करता है। - **मर्ज कमिट्स**: कमिट्स के रूप में गिने जाते हैं लेकिन कोई पंक्ति/फ़ाइल परिवर्तन नहीं जोड़ते। - **शैलो क्लोन**: काम करते हैं, लेकिन आँकड़े पूर्ण क्लोन से भिन्न हो सकते हैं; एक चेतावनी मुद्रित होती है। - **सबमॉड्यूल**: एकल बदली फ़ाइलों के रूप में गिने जाते हैं, git के नाम बदलने के हैंडलिंग से मामूली अंतर के साथ। - **पंक्ति गणना**: gitoxide के डिफ इंजन से, कुछ हंक्स पर git से थोड़ा भिन्न हो सकती है। - **SHA-256 रिपॉजिटरी**: समर्थित नहीं (gitoxide सीमा)। - **कमिट एन्कोडिंग**: गैर-UTF-8 एन्कोडिंग परिवर्तित नहीं की जाती; लेखक नामों में प्रतिस्थापन वर्ण दिख सकते हैं।