2013-04-16 9 views
7

के बीच काम करने की संख्या को आउटपुट कर सकता है मैं कस्टम बिल्ड बिल्ड सिस्टम के साथ काम कर रहा हूं जो बड़ी संख्या में गिट रिपॉजिटरीज़ का प्रबंधन करता है और मुख्य रूप से पायथन में लिखा जाता है।सबसे आसान संभव तरीका गिट "शाखा" और "रिमोट/मूल/शाखा"

यह मुझे बहुत समय बचाएगा यदि मैं एक आदेश लिख सकता हूं जो सभी भंडारों की वर्तमान शाखा की रिपोर्ट करेगा, तो रिपोर्ट करें कि "शाखा" का प्रमुख "रिमोट/मूल/शाखा" के प्रमुख के समान है "।

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

इस जानकारी को गिट से बाहर करने का तरीका क्या है जो पाइथन पक्ष पर मुझे पार्सिंग और प्रसंस्करण की मात्रा को कम करने के लिए जा रहा है?

उत्तर

1

git status दिखाता है कि आप रिमोट ट्रैकिंग शाखा के आगे/पीछे कितने काम करते हैं। हालांकि आपको पहले गिट फ़ेच करने की आवश्यकता है, क्योंकि अन्यथा गिट को पता नहीं चल सकता कि क्या कुछ नया रिमोट में चला गया है।

1

तो branch एक पंक्ति में उन दोनों के बीच में कमिट, प्रत्येक प्रिंट चाहिए, origin/branch हैं (यानी तेजी से forwardable) का पूर्वज माना सुनिश्चित किया जाता है तो

git log --oneline branch..origin/branch 

। आप या तो पाइथन या wc -l में लाइनों की गणना कर सकते हैं।

सुनिश्चित नहीं है कि सरल और सामान्य समाधान मौजूद है या नहीं। अनाथ शाखा शामिल होने पर origin/branch और branch के लिए कोई आम पूर्वज नहीं हो सकता है।

18

आप Git का एक नया पर्याप्त संस्करण है, तो आप उपयोग कर सकते हैं:

$ git rev-list --count --left-right branch...origin/branch 
2 1 

पहले नंबर यदि प्रतिबद्ध branch की संख्या origin/branch से आगे है, और दूसरा की संख्या के पीछे करता है। तो इस शाखा में दो काम हैं जो अभी तक अपस्ट्रीम नहीं हैं, और एक अपस्ट्रीम है जो अभी तक मेरी स्थानीय शाखा में नहीं है।

मुझे विश्वास है कि यह 1.6 या 1.7 था जब - गणना की गई थी।

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