2015-02-23 4 views
16

वहाँ यह क्लोन करने के लिए बिना एक सार्वजनिक Git भंडार के आकार का अनुमान कोई तरीका है?अनुमान क्लोनिंग से पहले एक Git भंडार के आकार यह

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

मैं जानता हूँ कि यह Github पर किया जा सकता है, लेकिन इस भंडार एक समर्पित सर्वर पर होस्ट कर रहा है।

+0

क्या आप सर्वर में 'ssh' कर सकते हैं और' du' कर सकते हैं? –

+0

नहीं, मैं इसमें 'ssh' नहीं कर सकता। –

+0

मुझे लगता है कि अगर हम जानते हैं कि आपको इस जानकारी की आवश्यकता क्यों है तो हम बेहतर मदद करने में सक्षम होंगे। – Schwern

उत्तर

6

संक्षिप्त उत्तर: "नहीं।"

, तो अंतरिक्ष एक चिंता का विषय बिल्कुल है आपकी सबसे बड़ी उपलब्ध freespace को रेपो क्लोन और अगर यह काफी Dinky कहीं और ले जाकर डाल करने के लिए है, यह सस्ता हो जाएगा।

इसे पाने के लिए वास्तव में एक क्रूर-बल तरीका: इसे उदाहरण में डालें सर्वर पर आपका पोस्ट-प्राप्त हुक

git for-each-ref refs/size | while read . . ref; do git update-ref --delete $ref; done 
set -- $(du -sh .git/objects) 
git update-ref refs/size/$1-as-of-$(date +%Y%m%dT%H%M%S%Z) HEAD 

और आप इसके लिए बस ls-remote कर सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। असल में मैं यह सुनिश्चित करना चाहता हूं कि रेपो 100 एमबी से छोटा है। मैंने अपना प्रश्न संपादित किया। –

6

संक्षिप्त उत्तर: एनएनएन ... शायद।

लांग जवाब: कुछ heuristics रहे हैं, और आप कुछ जानकारी बटोरने के लिए Git transfer protocols के साथ चारों ओर से प्रहार कर सकते हैं।

मेरा व्यक्तिगत अवलोकन यह है कि अधिकांश टेक्स्ट-आधारित परियोजनाओं के लिए, .git आकार बहुत पुरानी परियोजनाओं के लिए भी चेकआउट आकार से कहीं अधिक है।

info/refs प्राप्त करना आपको बताएगा कि कितने टैग और शाखा भंडार में हैं।

objects/info/packs प्राप्त करने से आपको पता चल जाएगा कि परियोजना में कौन से पैकफाइल हैं। पैक फाइलें कितनी बड़ी हैं, इसके बाद आप objects/pack/pack-WHATEVERTHEIDIS.pack पर हेड अनुरोध (इसे HTTP मानते हैं) कर सकते हैं। इससे आपको भंडार आकार के लिए कम बाध्यता मिल जाएगी।

यदि डिस्क स्थान समस्या है (डिस्क सस्ता है, एक नया खरीद लें), तो आप चेकआउट की जगह बचाने के लिए git clone --bare कर सकते हैं। फिर आप पूर्ण चेकआउट प्राप्त करने के लिए उस स्थानीय, नंगे संस्करण को क्लोन कर सकते हैं।

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

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