سؤال git "ping": تحقق من وجود مستودع بعيد


أود أن أعرف ما إذا كان يوجد مستودع بعيد. إليك ما توصلت إليه:

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

هل هناك أي طريقة أفضل؟


66
2017-12-31 00:34


الأصل


يبدو وكأنه اختيار جيد. النفقات العامة "العمل الإضافي" لجلب وتنسيق قائمة المراجع (التي يتم إرسالها بعد ذلك إلى /dev/nullيجب أن تكون صغيرة إلى حد ما. - Chris Johnsen
يجب أن تكون الإجابة: لا ، لا توجد طريقة أفضل. - Timo


الأجوبة:


اعتقد ان git ls-remote يتم إجراء الأمر إلى حد كبير لهذا الغرض.


59
2018-01-01 12:08



نعم ، يبدو أن هذا الأمر ناجع ، ولكن هل يمكنك ، من فضلك ، تقديم بعض التفسير وإخباره إذا كان هذا 100٪ يمكنني استنساخ ذلك الريبو - vladkras


إذا كنت تستخدم --exit-code حجة يمكنك تخطي إرسال الإخراج إلى null. سوف يعيد شيئا فقط في حالة الخطأ.

أيضا ، يمكنك استخدام -h حجة لإظهار فقط رؤساء الإشارات.

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

13
2017-10-29 14:18



-h هي فكرة رائعة. ومع ذلك، --exit-code ليس هو الخيار الصحيح هنا. صفحة الرجل تقول: قم بالخروج بالحالة "2" عندما لا توجد عمليات تحقق مطابقة في مستودع التخزين عن بعد. هذا يعني ذاك git ls-remote --exit-code "$REPO_URL" سوف تفشل لريبو فارغة التي تم فقط تهيئتها للتو git init. - Jo Liss


يمكنك تضييق الإخراج باستخدام شيء مثل git ls-remote "$REPO_URL" HEAD


3
2017-08-23 06:00



انها معلقة الى الابد. - Timo
Timo ، فمن المحتمل أن يكون لديك خادم لا يستجيب أو اتصالك أو عميل git مكسور. على سبيل المثال يتم تصفية منفذ الشبكة. مزيد من التحقيقات تشبه كيندا ما يحدث عندما لا يستجيب ping الخاص بك :). على سبيل المثال ، يمكنك محاولة التحقق مما إذا كان الاتصال قد تم إنشاؤه عبر أداة netcat أو openssl s_client أو تتبع مساره. - ony