Jawaban:
Saya pikir git ls-remote
perintahnya cukup banyak dibuat untuk tujuan itu.
Jika Anda menggunakan --exit-code
argumen, Anda dapat melewatkan pengiriman ke null
. Ini akan mengembalikan sesuatu hanya jika terjadi kesalahan.
Anda juga dapat menggunakan -h
argumen untuk hanya menampilkan referensi kepala.
git ls-remote --exit-code -h "$REPO_URL"
-h
adalah ide bagus. Namun, --exit-code
bukan pilihan yang tepat di sini. Halaman manual mengatakan: Keluar dengan status "2" ketika tidak ada referensi yang cocok ditemukan di repositori jarak jauh. Ini berarti bahwa git ls-remote --exit-code "$REPO_URL"
akan gagal untuk repo kosong yang baru saja diinisialisasi dengan git init
.
Anda dapat mempersempit output dengan menggunakan sesuatu seperti git ls-remote "$REPO_URL" HEAD
TL; DR:
git ls-remote
begini caranya, berikut adalah fungsi shell-ready untuk akses cepat:
## 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
}
Pemakaian:
if git-remote-url-reachable "$url"; then
## code
fi
Apa yang sedang dilakukannya?
Ini hanya penyatuan yang nyaman dari semua komentar / solusi yang sebelumnya dinyatakan dengan beberapa tweak kecil, fungsi siap-tempel bash dan contoh kode penggunaan untuk membuatnya lebih jernih. Anda akan perhatikan bahwa:
itu membatasi output sebagai referensi diperiksa mungkin tidak ada, karena git
masih akan keluar dengan tingkat kesalahan 0 pada ref tidak cocok . Satu-satunya perbedaan di sini adalah bahwa ada sedikit lebih sedikit keluaran untuk ditransfer di jaringan dibandingkan dengan meminta HEAD
(dan jauh lebih sedikit daripada tidak meminta ref atau bahkan membatasi hanya kepala), dan ini juga lebih sedikit keluaran untuk digunakan /dev/null
(tapi ini yang terakhir adalah mengambil waktu yang dapat diabaikan)
wasit yang diperiksa menjelaskan bahwa kami sedang menyelidiki keberadaannya , ini bisa membantu jika Anda ingin bersikap sopan dengan administrator server yang Anda selidiki dan memberi mereka kesempatan untuk memahami mengapa mereka menerima penyelidikan ini jika mereka memantau sesuatu.
/dev/null
) harus cukup kecil.