2011-01-13 10 views
5

प्रश्न में आंकड़े जनरेटर की वेबसाइट है:मैं अपने आंकड़ों के लिए केवल निर्दिष्ट फ़ाइल एक्सटेंशन का उपयोग करने के लिए गिटस्टैट को कैसे संशोधित करूं?

http://gitstats.sourceforge.net/ 

इसके Git भंडार से क्लोन किया जा सकता है:

git clone git://repo.or.cz/gitstats.git 

मुझे क्या करना चाहते है कुछ की तरह:

./gitstatus --ext=".py" /input/foo /output/bar 

भारी संशोधन के बिना उपर्युक्त विकल्प को आसानी से पार करने में सक्षम होने में विफल होने पर, मैं केवल उस फ़ाइल एक्सटेंशन को हार्ड-कोड करना चाहता हूं जिसे मैं शामिल करना चाहता हूं।

हालांकि, मैं संशोधित करने के लिए कोड के प्रासंगिक अनुभाग से अनिश्चित हूं और यहां तक ​​कि अगर मुझे पता था, तो मुझे इस तरह के संशोधनों को शुरू करने के बारे में अनिश्चितता है।

यह लगता है जैसे कि यह बल्कि सरल लेकिन अफसोस होगा ...

उत्तर

6

मुझे एक ही चीज़ की तलाश करते हुए आज यह प्रश्न मिला। Sinelaw के जवाब पढ़ने के बाद मैंने कोड में देखा और परियोजना को फोर्किंग समाप्त हो गया।

https://github.com/ShawnMilo/GitStats

मैं एक "exclude_extensions" config विकल्प जोड़ा। यह आउटपुट के सभी हिस्सों को प्रभावित नहीं करता है, लेकिन यह वहां जा रहा है।

मैं गिट आउटपुट के साथ जो कुछ भी कर रहा हूं उसे पूरी तरह से समझने के बाद मैं एक बहुत व्यापक पुनर्लेखन कर सकता हूं। मूल परियोजना लगभग चार साल पहले शुरू हुई थी और मानक पुस्तकालय और पायथन भाषा के कई अपडेटों के कारण बहुत साफ-सफाई हो सकती है।

+0

में बदला जाना चाहिए, मैंने संक्षेप में अपना स्वयं का समाधान लिखने पर विचार किया। उसमें मुझे कम करने के लिए धन्यवाद। –

+0

क्या यह अभी भी विकास में है? यह वही है जो मैं खोज रहा था, लेकिन मुझे उसी बहिष्कार से प्रभावित होने के लिए समय के साथ कोड की रेखाओं की आवश्यकता है। – danb

3

संपादित: जाहिरा तौर पर भी केवल "फ़ाइलें" स्टेट पेज है, जो दिलचस्प नहीं है को प्रभावित करता है नीचे पिछले समाधान। मैं कुछ बेहतर खोजने की कोशिश कर रहा हूँ। लाइन हम ठीक करने के लिए की जरूरत है 254, यह है:

lines = getpipeoutput(['git rev-list --pretty=format:"%%at %%ai %%aN <%%aE>" %s' % getcommitrange('HEAD'), 'grep -v ^commit']).split('\n') 

पिछला प्रयास किया गया था:

दुर्भाग्य से, Git आसानी से एक में फ़ाइलों के आधार पर फ़िल्टर (प्रतिबद्ध Git लॉग और Git में के लिए विकल्प प्रदान नहीं करता है की तरह लगता है रेव-सूची)। यह समाधान वास्तव में कुछ फ़ाइल प्रकारों (जैसे टैग पर आंकड़े) के लिए सभी आंकड़ों को फ़िल्टर नहीं करता है, लेकिन ऐसे भाग के लिए ऐसा करता है जो लाइनों की संख्या से गतिविधि की गणना करता है।

res = int(getpipeoutput(['git ls-tree -r --name-only "%s"' % rev, 'wc -l']).split('\n')[0]) 

आप कमांड में ग्रेप में एक पाइप को जोड़ने या तो द्वारा कि बदल सकते हैं, इस तरह::

तो सबसे अच्छा मैं के साथ आ सकता है gitstats की लाइन 499 (मुख्य लिपि) में है

res = int(getpipeoutput(['git ls-tree -r --name-only "%s"' % rev, 'grep \\.py$', 'wc -l']).split('\n')[0]) 

या, आप 'WC -l' भाग बाहर विभाजित कर सकता है, स्ट्रिंग की एक सूची में Git ls-पेड़ के उत्पादन में मिलता है, और fnmatch मॉड्यूल का उपयोग करके परिणामी फ़ाइल नाम फ़िल्टर (और उसके बाद गिनती प्रत्येक फ़ाइल में लाइनें, संभवतः 'wc -l' का उपयोग करके) लेकिन यह आपके द्वारा tr की विशिष्ट समस्या के लिए ओवरकिल की तरह लगता है हल करने के लिए यिंग।

अभी भी समस्या का समाधान नहीं करता है (शेष आंकड़े इस फ़िल्टर को अनदेखा करेंगे), लेकिन उम्मीद है कि सहायक।

+0

मैं इसे देखना शुरू कर दूंगा और देखें कि मैं क्या आया हूं। आपकी सहायता के लिए धन्यवाद. :) –

+0

मुझे स्पष्ट नहीं है कि लाइन को –

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

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