답변:
--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
.
TL; DR :
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
뭐하는거야?
이것은 약간의 미세 조정, bash copy-paste ready 기능 및 사용법 코드 샘플로 이전에 언급 된 모든 주석 / 솔루션의 편리한 매시 업입니다. 다음과 같은 점에 유의하십시오.
git
일치하지 않는 ref에서 여전히 오류 수준 0으로 종료 되므로 확인 된 참조가 존재하지 않을 때 출력을 제한합니다 . 여기에 유일한 차이점은 요청에 비해 네트워크에 전송하는 약간 덜 출력 있다는 것입니다 HEAD
(그리고 심판을 요청하거나 단지 머리에 제한하지 않는 것보다 훨씬 적은),이도에 캐스팅 적은 출력 /dev/null
(그러나이 어쨌든 마지막 시간은 무시할 만하다.)
ref를 체크 하면 존재 여부를 확실하게 알 수 있습니다. 이는 프로브 하려는 서버의 관리자에게 정중 한 태도를 취하고 그들이 무엇을 모니터링 할 때 이러한 프로브를받는 이유를 이해할 수있는 기회를 제공하는 데 도움이 될 수 있습니다.
/dev/null
) "추가 작업"의 오버 헤드는 상당히 작아야합니다.