git क्या गिट दोष के उत्पादन को अनुकूलित करने का एक तरीका है?




blame (4)

चूंकि git log आउटपुट के लिए अधिक अनुकूलन विकल्प प्रदान करता है, आप जो चाहते हैं उसे प्राप्त करने के लिए git blame , awk , xargs और git log को मिला सकते हैं। उदाहरण के लिए

git --no-pager blame <filepath> -L1,+1 --porcelain | awk 'NR==1 {print $1}' | xargs git --no-pager log -1 --pretty=format:"%h - (%cd) %s - %an" --date=relative

यह कुछ इस तरह से आउटपुट करता है:

f8a66e80c - (5 months ago) Add gem: devise - elquimista

मूल रूप से ऊपर जो git blame और awk करता है उसे एक पूर्ण प्रतिबद्ध SHA मिलता है, और xargs इसे तर्क के रूप में git log में पास करता है।

git log में आउटपुट के स्वरूप को निर्दिष्ट करने के लिए एक अच्छा - --format विकल्प है।

लेकिन git blame समतुल्य प्रतीत नहीं होता है, हालांकि blame का डिफ़ॉल्ट आउटपुट काफी मानव-अनुकूल नहीं है। मैं बहुत कम देखना चाहूंगा।

उदाहरण के लिए, इसके बजाय:

5600cab7 js/sidebar/VehicleGrid.js        (Rene Saarsoo    2009-10-08 18:55:24 +0000 127)    if (x > y) {
b5f1040c js/map/monitoring/VehicleGrid.js (Mihkel Muhkel   2010-05-31 07:20:13 +0000 128)        return x;

मैं लेना पसंद करूँगा:

5600cab7 Rene Saarsoo (1 year ago)     127:    if (x > y) {
b5f1040c Mihkel Muhkel (5 months ago)  128:        return x;

मैं git blame --porcelain हूं कि मैं git blame --porcelain के उत्पादन को पार्स करने के लिए एक स्क्रिप्ट लिख सकती हूं - git blame --porcelain लेकिन git blame --porcelain के भयावह डिफ़ॉल्ट आउटपुट को देखते हुए मुझे लगता है कि किसी ने वहां पहले से ही इसके बारे में कुछ किया होगा।

कोई विचार? या इस तरह की स्क्रिप्ट को लागू करने के लिए कोई सुझाव?

संपादित करें: छोटी स्क्रिप्ट लिखकर इसे हल किया।


अपडेट गेट 2.18 (Q2 2018): " git blame " सीखता है कि जो पूर्ववर्ती पंक्ति के समान हैं, उन लाइनों पर उत्पन्न होने वाले मेटाडेटा से अनइथलाइटिंग मेटाडेटा सीखते हैं, और कमिट की उम्र के आधार पर विभिन्न रंगों में लाइनें भी पेंट करते हैं।

प्रतिबद्ध देखें 0dc95a4 , 25d5f52 के लिए प्रतिबद्ध , Stefan बेलर ( stefanbeller ) द्वारा cdc2d5f (24 अप्रैल 2018 )
( gitster सी gitster द्वारा विलय - gitster - प्रतिबद्ध 3d24129 में , 30 मई 2018)

builtin/blame : नई रंग योजना विन्यास जोड़ें

एक कॉन्फ़िगर विकल्प जोड़ें जो दोष के लिए डिफ़ॉल्ट रंग योजना का चयन करने की अनुमति देता है। कमांड लाइन अभी भी कॉन्फ़िगरेशन पर पूर्वता लेता है।

git config अब रिपोर्ट करता है:

blame.coloring::

यह आउटपुट को दोष देने के लिए लागू की जाने वाली रंग योजना को निर्धारित करता है।
यह ' repeatedLines ', ' highlightRecent ', या ' none ' हो सकता है जो डिफ़ॉल्ट है।

बिलिन / दोष: हाल ही में परिवर्तित लाइनों को उजागर करें

तिथियों के लिए एक अलग रंग चुनें और उम्र के आधार पर 'तापमान शांत' का अनुकरण करें।

पिछले पैच के समान, यह कमांड लाइन विकल्प ' --color-by-age ' को इस मोड को सक्षम करने के लिए और रंगों का चयन करने के लिए ' color.blame.highlightrecent ' color.blame.highlightrecent विकल्प प्रदान करता है।

प्रलेखन अब जोड़ता है:

color.blame.highlightRecent

इसका उपयोग लाइन की उम्र के आधार पर एक दोष रेखा के मेटाडेटा को रंग देने के लिए किया जा सकता है।

यह सेटिंग रंग और दिनांक सेटिंग्स की अल्पविराम से अलग की गई सूची पर सेट की जानी चाहिए, एक रंग के साथ शुरू और समाप्त होती है, तिथियां सबसे पुरानी से नवीनतम तक निर्धारित की जानी चाहिए।
यदि मेटाडेटा को दिए गए टाइमस्टैम्प से पहले लाइन शुरू की गई थी, तो मेटाडेटा को रंग दिया जाएगा, पुराने टाइमस्टैम्प रंगों को अधिलेखित किया जाएगा।

इसके बजाय एक पूर्ण टाइमस्टैम्प रिश्तेदार टाइमस्टैम्प के रूप में अच्छी तरह से काम करते हैं, उदाहरण के लिए 2.weeks.ago 2 सप्ताह से अधिक पुराने कुछ भी संबोधित करने के लिए मान्य है।

यह blue,12 month ago,white,1 month ago,red ’, जो एक वर्ष से अधिक पुरानी सभी चीजों को रंग देता है, हाल ही में एक महीने से एक वर्ष के बीच के बदलावों को सफेद रखा जाता है, और अंतिम महीने के भीतर पेश की जाने वाली रेखाएं रंगीन होती हैं। लाल।

builtin/blame : मंद निर्बाध मेटाडाटा लाइनें

git-blame का उपयोग करते git-blame , बहुत सारी लाइनों में निरर्थक जानकारी होती है, उदाहरण के लिए कई लाइनों से मिलकर हंक में, मेटाडेटा (प्रतिबद्ध नाम, लेखक, तिथि) दोहराई जाती है।
एक पाठक उन में दिलचस्पी नहीं ले सकता है, इसलिए पिछली पंक्ति से अलग की गई जानकारी को रंग देने के लिए एक विकल्प प्रदान करें।
परंपरागत रूप से, हम उन लाइनों के लिए CYAN का उपयोग करते हैं जो दूसरों की तुलना में कम दिलचस्प हैं (जैसे हंक हेडर), इसलिए उसी के साथ जाएं।

कमांड लाइन विकल्प ' --color-lines ' बार-बार लाइनों के रंग को ट्रिगर करेगा, और रंग का चयन करने के लिए config विकल्प ' color.blame.colorLines ' प्रदान किया जाता है।
कॉन्फ़िगरेशन विकल्प सेट करने का मतलब यह नहीं है कि दोहराया लाइनें रंगीन हैं।

मूल उत्तर 2010

Trac या Redmine जैसे वेब इंटरफ़ेस को ध्यान में रखते हुए git blame परिणामों को एकीकृत करता है, मुझे लगता है कि इस तरह की पार्सिंग पहले ही की जा चुकी है।

आप Redmine Defect 3832 में इस रूबी लिपि के साथ एक उदाहरण देख सकते हैं:


आप वैकल्पिक आउटपुट प्रारूप का उपयोग कर सकते हैं: git annotate या git blame -c

आप --date=<format> विकल्प (या blame.date कॉन्फ़िगरेशन चर) के साथ --date=<format> स्वरूपण को बदल सकते हैं, जहां <format> सापेक्ष, स्थानीय, डिफ़ॉल्ट, आईएसओ, आरएफसी, लघु में से एक है । विवरण के लिए git-blame और git-log manpages देखें।


मेरे लिए, -s झंडा काम करता है, क्योंकि मुझे सभी की ज़रूरत है SHA1 ID, जिसके बाद मैं विवरण के लिए प्रतिबद्ध दिखता हूं। एक स्क्रिप्ट निश्चित रूप से ओवरकिल की तरह लगती है। क्या यह संभव है -s ध्वज एक वर्ष पहले अनुपलब्ध था?





blame