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 टिप्पणियां
Hacker News राय
"vim को किसने लिखा" विश्लेषण के संदर्भ में, workflow के आधार पर यह लग सकता है कि internal contributors ने ज़्यादा योगदान दिया है
यह टूल वाकई शानदार है। दिन खत्म करने से पहले मैंने इसे थोड़ी देर इस्तेमाल करके देखा
git blame को बहुत से लोग गलत समझते हैं। यह किसने किया के बारे में नहीं, बल्कि कौन-सा commit कारण है, इसके बारे में है
git-whoकोgit whoके रूप में चलाया जा सकता है। इसके लिए global Git settings में alias सेट करना होगाgit whateverpath में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 का उपयोग करता हूँ
tigएक शानदार TUI git frontend है, और इसमें सुंदरtig blamesubcommand हैGit में जो चीज़ missing है, वह developers द्वारा लिखी गई lines की संख्या या commits की संख्या नहीं है। बल्कि यह है
कुछ लोग दो अलग-अलग email से commit करते हैं। उदाहरण के लिए, घर के computer और office के computer पर अलग-अलग email का उपयोग करते हैं। अच्छा होगा अगर इन्हें एक ही व्यक्ति के रूप में define किया जा सके