How to check the validity of a remote git repository URL? How to check the validity of a remote git repository URL? curl curl

How to check the validity of a remote git repository URL?


As seen in this issue, you can use git ls-remote to test your address.

If you need to debug the git calls set GIT_TRACE=1. eg:

env GIT_PROXY_COMMAND=myproxy.sh GIT_TRACE=1 git ls-remote https://...

"git ls-remote" is the quickest way I know to test communications with aremote repository without actually cloning it. Hence its utility as a test for thisissue.

You can see it used for detecting an address issue in "git ls-remote returns 128 on any repo".


Although VonC's answer is correct, here's what I ended up using:

git ls-remote will return information about a repository, by default this is HEAD, all branches and tags, along with the commit ID for each entry.e.g.:

$ git ls-remote git://github.com/user/repo.git<commit id>    HEAD<commit id>    refs/heads/example_branch<commit id>    refs/heads/master<commit id>    refs/tags/v1.0.2<commit id>    refs/tags/v1.0.0

git ls-remote returns code 0 on success, error code 128 on failure.

If the repo is unreachable, for example, if you don't have permission to view the repository, or if a repository doesn't exist at that location, git ls-remote will return:

fatal: The remote end hung up unexpectedly

To use this in a bash script, the following will work...

git ls-remote "$SITE_REPO_URL" > /dev/null 2>&1if [ "$?" -ne 0 ]; then    echo "[ERROR] Unable to read from '$SITE_REPO_URL'"    exit 1;fi

(Note: The > /dev/null 2>&1 silences stderr and stdout, so the command won't output anything)