2015-10-16 3 views
7

मैं पिछले 24 घंटों में master शाखा में जोड़े गए (मर्ज कमेट्स को छोड़कर) को दिखाने की कोशिश कर रहा हूं। वर्तमान में मैं उस के लिए इस आदेश का उपयोग कर रहा हूँ:लॉग इन पिछले 24 घंटों में मास्टर में जोड़े गए

git log --format=format:%s --no-merges --since='24 hours ago' 

हालांकि यह एक समस्या है: अगर एक प्रतिबद्ध है बड़े से कम 24 घंटे, लेकिन पिछले 24 घंटों में master शाखा में विलय कर दिया, आदेश सूचीबद्ध नहीं करेगा प्रतिबद्ध । क्या पिछले 24 घंटों में master शाखा में जोड़े गए कामों को दिखाना संभव है, और पिछले 24 घंटों में बनाए गए नहीं हैं?

कृपया ध्यान दें कि मैं इसे एक स्वच्छ सीआई वर्कस्पेस में निष्पादित करता हूं, इसलिए git reflog मेरी मदद नहीं कर सकता।

अग्रिम धन्यवाद!

+0

'--no-merges' के बजाय, 'पूर्व-माता-पिता' बेहतर काम कर सकता है? – ams

+0

@ams जो केवल मर्ज काम दिखाएगा। मुझे पिछले 24 घंटों में 'मास्टर' शाखा में जोड़ा गया मर्ज किए गए कामों की आवश्यकता नहीं है। – WonderCsabo

उत्तर

3

मुझे लगता है कि rev-list वह है जो आप चाहते हैं।

इस प्रयास करें:

git rev-list --no-merges '^<24-hour-old-commit>' HEAD 

कि सभी गैर-मर्ज करता है कि HEAD प्रतिबद्ध से पहुंचा जा सकता है, लेकिन से प्रतिबद्ध <24-hour-old-commit> से पहुंच योग्य नहीं सूचीबद्ध करना चाहिए।

उदाहरण के लिए, इस संशोधन के ग्राफ में, यह सूचीबद्ध करेंगे अपर केस करता है, लेकिन नहीं लोअर केस:

a - b - c - 24h - H - i - J - K - HEAD 
    \    /
     D - E - F - G ' 

प्रतिबद्धता H, J, K, और HEAD 24 से सभी युवा घंटे पुराने हैं। Commit i भी छोटा है, लेकिन इसे छोड़ दिया गया है क्योंकि यह एक विलय प्रतिबद्ध है। D, E, F, और G कोई भी उम्र हो सकती है, लेकिन केवल पिछले 24 घंटों में ही विलय हो गई है, इसलिए वे भी सूचीबद्ध हैं। के रूप में आप git log साथ है


उपरोक्त आदेश के भीतर, --max-age या --since विकल्प एक ही समस्या है, लेकिन वे तुम्हारे लिए <24-hour-old-commit> लगाने के लिए इस्तेमाल किया जा सकता:

git rev-list -n1 --before="24 hours" --first-parent HEAD 

है यही कारण है कि, "देना केवल 1 प्रतिबद्ध आईडी, जो कम से कम 24 घंटे पुरानी होनी चाहिए, और वर्तमान शाखा पर है "।

यह सबको एक साथ रखें:

git rev-list --no-merges HEAD \ 
      --not $(git rev-list -n1 --before="24 hours" --first-parent HEAD) 

(नोट: --not abcdef एक और तरीका छोड़कर यह तर्क निम्नलिखित सभी पर लागू होने वाला है, इसलिए विकल्प को पुन: क्रम ^abcdef कहने के लिए है।)

डिफ़ॉल्ट उत्पादन rev-list का सिर्फ कच्चे संशोधन है, लेकिन आप इसे विकल्प का उपयोग करके git log पर अधिक बना सकते हैं। --pretty=short लगभग उतना ही है जितना आप उपयोग करते हैं।

+0

लेकिन स्क्रिप्ट करना मुश्किल नहीं होगा - वर्तमान में मुझे नहीं पता कि यह कैसे है, यह वह जगह है जहां मैं भी अटक गया। क्या आप विस्तार से बात करेंगे?मुझे लगता है कि यह एक मुश्किल काम है, हमें पिछले 24 घंटों में 'मास्टर' में पहली प्रतिबद्धता मिलनी है ... – WonderCsabo

+0

मैं बस इसे देख रहा था। जल्द ही संपादित करें। :-) – ams

+0

जानकारी जोड़ा गया, कृपया परीक्षण करें और रिपोर्ट करें। :-) – ams

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