git "पिंग": जांचें कि क्या दूरस्थ रिपॉजिटरी मौजूद है


76

मैं जानना चाहता हूं कि क्या रिमोट रिपोजिटरी मौजूद है। यहाँ मैं क्या लेकर आया हूँ:

git ls-remote -h "$REPO_URL" &> /dev/null

क्या कोई बेहतर तरीका है?


4
यह एक अच्छा विकल्प लगता है। रेफरी की सूची लाने और तैयार करने के "अतिरिक्त काम" का ओवरहेड /dev/nullकाफी छोटा होना चाहिए।
क्रिस जॉन्सन

जवाब होना चाहिए: नहीं, कोई बेहतर तरीका नहीं है।
तिमू

जवाबों:


70

मुझे लगता है कि git ls-remoteकमांड उस उद्देश्य के लिए बहुत अधिक है।


हाँ, यह काम करने लगता है, लेकिन क्या आप कृपया, कुछ स्पष्टीकरण प्रदान कर सकते हैं और बता सकते हैं कि क्या यह 100% है कि मैं उस रेपो का क्लोन कर सकता हूँ
vladkras

15

यदि आप --exit-codeतर्क का उपयोग करते हैं तो आप आउटपुट भेजना छोड़ सकते हैं null। यह केवल त्रुटि के मामले में कुछ लौटाएगा।

इसके अलावा, आप -hकेवल प्रमुख संदर्भ दिखाने के लिए तर्क का उपयोग कर सकते हैं ।

git ls-remote --exit-code -h "$REPO_URL"

-hएक महान विचार है। हालांकि, --exit-codeयहां सही विकल्प नहीं है। मैन पेज कहता है: "2" स्थिति से बाहर निकलें जब रिमोट रिपॉजिटरी में कोई मिलान रेफरी नहीं मिलता है। इसका मतलब यह है कि git ls-remote --exit-code "$REPO_URL"एक खाली रेपो के लिए असफल हो जाएगा जिसे केवल प्रारंभिक रूप से बदल दिया गया है git init
जो लिस

3

आप कुछ का उपयोग करके आउटपुट को कम कर सकते हैं git ls-remote "$REPO_URL" HEAD


यह हमेशा के लिए लटका रहता है।
टिमो

1
@ टिमो, तब शायद आपके पास अनुत्तरदायी सर्वर या आपका कनेक्शन या टूटा हुआ गिट क्लाइंट है। उदाहरण के लिए नेटवर्क पोर्ट फ़िल्टर किया गया है। आगे की जांच थोड़े के समान होती है जब आपका पिंग जवाब नहीं देता है :)। उदाहरण के लिए आप देखें कि क्या आप कनेक्शन के माध्यम से स्थापित पाने की कोशिश कर सकते netcat या openssl s_client या tracepath
ony

0

टी एल; डॉ:

git ls-remote रास्ता है, यहाँ त्वरित पहुँच के लिए एक शेल-तैयार फ़ंक्शन है:

  ## Returns errlvl 0 if $1 is a reachable git remote url 
  git-remote-url-reachable() {
      git ls-remote "$1" CHECK_GIT_REMOTE_URL_REACHABILITY >/dev/null 2>&1
  }

उपयोग:

if git-remote-url-reachable "$url"; then
   ## code
fi

यह क्या कर रहा हैं ?

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

  • यह आउटपुट को सीमित करता है क्योंकि चेक किया गया संदर्भ संभवत: कोई git भी नहीं है, क्योंकि अभी भी गैर-मिलान रेफरी पर त्रुटि-स्तर 0 के साथ बाहर निकल जाएगा । यहाँ केवल अंतर यह है कि नेटवर्क पर ट्रांसफर करने के लिए पूछने की तुलना में थोड़ा कम आउटपुट होता है HEAD(और रेफरी के पूछने पर या केवल हेड्स तक सीमित न होने की तुलना में बहुत कम), और यह भी इसमें डालने के लिए कम आउटपुट है /dev/null(लेकिन इसमें पिछले किसी भी समय नगण्य समय ले रहा है)

  • रेफरी ने यह स्पष्ट कर दिया है कि हम अस्तित्व के लिए जांच कर रहे हैं , यह मदद कर सकता है यदि आप उस सर्वर के प्रशासक के साथ विनम्र रहना चाहते हैं जो आप जांच कर रहे हैं और उन्हें समझने का मौका दें कि वे इन जांचों को प्राप्त करते हैं यदि वे कुछ भी निगरानी करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.