8 पॉइंट द्वारा GN⁺ 2025-03-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • git-who कोडबेस के पूरे कॉम्पोनेंट या सबसिस्टम के लिए जिम्मेदार व्यक्ति को खोजने वाला एक CLI टूल है
  • git blame के विपरीत, git-who file tree स्तर पर काम करता है और कोड लेखक की पहचान करता है
  • यह तीन subcommands देता है, और हर subcommand Git repository में ownership को अलग नज़रिए से दिखाता है
    • table

      • डिफ़ॉल्ट रूप से, repository में commit करने वाले सभी authors के contributions का सारांश एक तालिका में दिखाता है
      • path निर्दिष्ट करके किसी खास path की files पर हुए commits को फ़िल्टर किया जा सकता है
      • branch name, tag name, या "commit-ish" निर्दिष्ट करके किसी खास commit से reachable commits को ही फ़िल्टर किया जा सकता है
      • -m, -c, -l, -f flags का उपयोग करके तालिका को अलग-अलग metrics के आधार पर sort किया जा सकता है
    • tree

      • file tree को प्रिंट करता है, और हर node पर उस path में सबसे अधिक योगदान देने वाले author को दिखाता है
      • -a flag का उपयोग करके सभी files को annotate किया जा सकता है
      • -l, -f, -m, -c flags को support करता है
    • hist

      • commit activity का histogram/timeline प्रिंट करता है, जिससे repository में योगदान का इतिहास दिखता है
      • -l और -f flags को support करता है
  • commit filtering के लिए अतिरिक्त options
    • --author और --nauthor options से शामिल या बाहर रखने वाले authors को निर्दिष्ट किया जा सकता है
    • --since और --until options से किसी खास तारीख से पहले या बाद के commits को फ़िल्टर किया जा सकता है
  • caching: XDG_CACHE_HOME में repository-वार data cache करता है। caching बंद करने के लिए GIT_WHO_DISABLE_CACHE=1 सेट करें
  • अगर git-who binary को path में install किया गया हो, तो बिना अतिरिक्त सेटअप के git who चलाया जा सकता है। किसी दूसरे नाम से install करने या explicitly configure करने के लिए Git config में alias जोड़ा जा सकता है
  • अगर Git repository में .mailmap file मौजूद है, तो git who उसका सम्मान करता है और एक ही व्यक्ति के commits को साथ में गिनता है
  • metrics

    • commit count: उस path को modify करने वाले commits की संख्या दिखाता है
    • file count: author द्वारा modify की गई unique files की संख्या दिखाता है
    • lines added और lines removed: path में जोड़ी गई या हटाई गई पंक्तियों की संख्या दिखाते हैं
  • git blame से अंतर

    • git blame working tree के code के आधार पर हर line को introduce करने वाले commit की पहचान करता है, जबकि
    • git who commit log के एक हिस्से को देखकर contributions को aggregate करता है
    • दोनों टूल अलग-अलग स्तर पर काम करते हैं और अलग तरह की जानकारी देते हैं

1 टिप्पणियां

 
GN⁺ 2025-03-20
Hacker News राय
  • "vim को किसने लिखा" विश्लेषण के संदर्भ में, workflow के आधार पर यह लग सकता है कि internal contributors ने ज़्यादा योगदान दिया है

    • अगर patch या pull request को merge से पहले internal contributor द्वारा reformat किया जाता है, तो वही काम दो बार गिना जा सकता है या योगदान सिर्फ reformat करने वाले व्यक्ति को ही atribuit किया जा सकता है
    • नतीजे गलत नहीं हैं, लेकिन योगदान प्रक्रिया की समीक्षा किए बिना उनसे अर्थ निकालते समय सावधानी ज़रूरी है
  • यह टूल वाकई शानदार है। दिन खत्म करने से पहले मैंने इसे थोड़ी देर इस्तेमाल करके देखा

    • मेरी personal wishlist यह है
      • blame-आधारित statistics. Bob और Alice के योगदान देखना अच्छा है, लेकिन module/file के वास्तविक owner को दिखाना ज़्यादा उपयोगी होगा
      • pattern-आधारित include/exclude support. उदाहरण के लिए, test में इस्तेमाल होने वाली json files या auto-generated files की statistics नहीं देखना चाहता
      • config file support. अच्छा होगा अगर git repository में preferred settings सहेजने के लिए TOML-आधारित file हो
      • बेहतर packaging. उदाहरण के लिए, v0.6 के Linux tarball में Apple से जुड़ा "कचरा" शामिल है, और gnu tar archive format mismatch की warning देता है
  • git blame को बहुत से लोग गलत समझते हैं। यह किसने किया के बारे में नहीं, बल्कि कौन-सा commit कारण है, इसके बारे में है

  • git-who को git who के रूप में चलाया जा सकता है। इसके लिए global Git settings में alias सेट करना होगा

    • alias के बिना भी यह काम करता है। default रूप से git whatever path में git-whatever को खोजकर चलाता है
  • low-spec version के रूप में मैं "nerdwars" alias का उपयोग करके "git shortlog -ns --no-merges" चलाता हूँ। यह किसी project के मुख्य contributors को समझने का अच्छा तरीका है

  • Gitlab/Github को ऐसा feature जोड़ना चाहिए जो submitted merge request के संशोधित code lines के आखिरी author को अपने-आप email भेज दे

  • यह टूल बेहतरीन है। मैं app के हर release में AI और इंसानों द्वारा लिखे गए code की मात्रा ट्रैक करने के लिए git-blame accounting का उपयोग करता हूँ

    • "blame script" repository का आकार बढ़ने के साथ धीमा हो रहा है। मैंने caching जोड़ने की कोशिश की थी
    • मैं जानना चाहता हूँ कि क्या file pattern के आधार पर statistics सीमित करने की सुविधा जोड़ने की कोई योजना है
  • tig एक शानदार TUI git frontend है, और इसमें सुंदर tig blame subcommand है

  • Git में जो चीज़ missing है, वह developers द्वारा लिखी गई lines की संख्या या commits की संख्या नहीं है। बल्कि यह है

    • इस line को किसने delete किया
    • इस method का owner कौन है
  • कुछ लोग दो अलग-अलग email से commit करते हैं। उदाहरण के लिए, घर के computer और office के computer पर अलग-अलग email का उपयोग करते हैं। अच्छा होगा अगर इन्हें एक ही व्यक्ति के रूप में define किया जा सके