গিট “পিং”: দূরবর্তী সংগ্রহস্থল উপস্থিত আছে কিনা তা পরীক্ষা করুন


76

আমি জানতে চাই যে একটি দূরবর্তী সংগ্রহস্থল রয়েছে কিনা exists আমি এখানে যা এলাম তা এখানে:

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

এর চেয়ে ভাল উপায় আর কি আছে?


4
এটি একটি দুর্দান্ত পছন্দ মত মনে হচ্ছে। রেফগুলির তালিকা আনার এবং বিন্যাসকরণের "অতিরিক্ত কাজ" এর ওভারহেড /dev/nullমোটামুটি ছোট হওয়া উচিত।
ক্রিস জনসন

উত্তরটি হওয়া উচিত: না, এর চেয়ে ভাল আর কোনও উপায় নেই।
টিমো

উত্তর:


70

আমি মনে করি সেই উদ্দেশ্যে git ls-remoteকমান্ডটি বেশ তৈরি হয়েছে।


হ্যাঁ, এটি কাজ করে বলে মনে হচ্ছে তবে আপনি কি দয়া করে কিছু ব্যাখ্যা সরবরাহ করতে পারেন এবং এই 100% যে আমি সেই
রেপোটিকে

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(তবে এটি শেষটি যাইহোক নগণ্য সময় নিচ্ছে)

  • রেফ চেক করা হয়েছে তা পরিষ্কার করে দেয় যে আমরা অস্তিত্বের জন্য অনুসন্ধান করছি , আপনি যদি যে সার্ভারটি অনুসন্ধান করছেন তার প্রশাসকদের সাথে যদি আপনি নম্র হতে চান এবং তাদের কিছু পর্যবেক্ষণ করেন তবে তারা কেন এই প্রোবগুলি গ্রহণ করবেন তা বোঝার সুযোগ দেওয়ার ক্ষেত্রে এটি সহায়তা করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.