2012-04-20 11 views
7

मैंने सोचा कि अगर यह गिट रिपोजिटरी लेना संभव था, कुछ स्क्रिप्ट चलाएं, और कोड आधार में लाइनों की संख्या उत्पन्न हो, और योगदान देने वाले प्रत्येक लेखक के अनुपात में यह साफ हो जाए तो यह साफ होगा इसके लिएलेखक द्वारा वर्तमान कोड वितरण का निर्धारण

असल में, क्योंकि मैं एक प्रतिस्पर्धी कोडर हूं, मैं व्यक्तिगत मीट्रिक देखना चाहता हूं कि मैंने जो लाइनें लिखी हैं (वर्तमान हेड में) मेरे साथी (ओं) से अधिक हैं। यह कहना एक मजेदार आंकड़ा होगा "मैंने वर्तमान कोडबेस का% लिखा"।

क्या किसी ने कभी ऐसा करने के लिए सोचा है? मैंने एक रास्ता तलाश लिया है, लेकिन मेरा खोल स्क्रिप्टिंग सबसे अच्छा नहीं है, इसलिए मैं इसे अकेला नहीं कर सका।

+5

मुझे यकीन है कि आपने यह पहले सुना है: "कोड की रेखाओं से प्रोग्रामिंग प्रगति मापना वजन से विमान निर्माण की प्रगति को मापने जैसा है।" – Etaoin

+0

@Etaoin: इच्छा है कि मैं +1000 कर सकता हूं। :-) – torek

उत्तर

1

आप गिट लॉग का उपयोग कर सकते हैं, जैसा कि "Which Git commit stats are easy to pull" में दिखाया गया है।

या आप गिट Lookatgit प्रोजेक्ट पर एक नज़र डाल सकते हैं, जो इसकी gitauthor.rb class में देखी गई रेखाओं की संख्या का निरीक्षण करता है।

1

आप git-blame के आउटपुट को पार्स करने का प्रयास कर सकते हैं। यह आदेश अंतिम व्यक्ति को देता है जो फ़ाइल की प्रत्येक पंक्ति को संपादित करता है।

यह उदाहरण आपको वास्तव में क्या नहीं करना चाहता है, लेकिन मैं इसे आप विचार देता है लगता है:

git blame -e the/file | awk -F '<|>' '{print $2}' | sort | uniq -c 

यह लाइनों की संख्या है कि वे एक के लिए अंत में संशोधित के साथ एक साथ लेखकों के ई-मेल पते प्रिंट होगा फ़ाइल, उदाहरण के लिए:

 47 [email protected] 
    34712 [email protected] 

यह पूरे भंडार पर चलने के लिए, आपको कुछ इस तरह कर सकते हैं:

git ls-files | while read f; do git blame -e $f; done | awk -F '<|>' '{print $2}' | sort | uniq -c 

यहां विचार है कि पहले git ls-files के साथ फ़ाइलों की सूची उत्पन्न करें, और फिर प्रत्येक फाइल पर उपरोक्त स्निपेट चलाएं (here का स्निपेट का उपयोग करके)। यदि आप इसे बड़े कोडबेस पर चला रहे हैं, तो आप पाइप का उपयोग करने के बजाय इंटरमीडिएट परिणामों को अस्थायी फ़ाइलों में स्टोर करना चाह सकते हैं।

1

आपको शायद gitdm की आवश्यकता है, यह वही कर सकता है जो आपको चाहिए। हम इसे contribution statistics बनाने के लिए महाारा परियोजना के लिए उपयोग करते हैं।

git log -p -M v2.6.19..v2.6.20 | gitdm -u -s -a -o results -h results.html 

तुम भी अनुकूलित कर सकते हैं:

"जो 2.6.x लिखने" LWN लेख उत्पन्न करने के लिए प्रयोग किया जाता है एक ठेठ कमांड लाइन की तरह दिखता है:

बस क्या README पता चलता कर यह आपके अपने उद्देश्यों के लिए है।

संबंधित मुद्दे