Hig*_*ife 45 git url bash curl github
在bash脚本中,验证git URL指向有效git repo并且脚本有权从中读取的最简单方法是什么?
应该支持的协议是git@,https://和git://.Curl在git://协议上失败.
git@github.com:UserName/Example.git
https://UserName@github.com/UserName/Example.git
git://github.com/UserName/Example.git
Run Code Online (Sandbox Code Playgroud)
注意:我不是要求检查URL是否在语法上正确,我需要验证在bash脚本中输入的URL位置是否存在repo.
Von*_*onC 41
如本期所述,您可以使用git ls-remote来测试您的地址.
如果你需要调试git调用
set GIT_TRACE=1.例如:
env GIT_PROXY_COMMAND=myproxy.sh GIT_TRACE=1 git ls-remote https://...
Run Code Online (Sandbox Code Playgroud)
"
git ls-remote"是我所知道的最快的方式来测试与远程存储库的通信而不实际克隆它.因此它可以用来测试这个问题.
您可以在" git ls-remote任何仓库中返回128 "中看到它用于检测地址问题.
Hig*_*ife 40
虽然VonC的答案是正确的,但这是我最终使用的内容:
git ls-remote将返回有关存储库的信息,默认情况下,这是HEAD,所有分支和标记,以及每个条目的提交ID.例如:
$ 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
Run Code Online (Sandbox Code Playgroud)
git ls-remote 成功时返回代码0,失败时返回错误代码128.
如果无法访问存储库,例如,如果您没有查看存储库的权限,或者该位置不存在存储库,git ls-remote则将返回:
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
要在bash脚本中使用它,以下内容将起作用...
git ls-remote "$SITE_REPO_URL" &>-
if [ "$?" -ne 0 ]; then
echo "[ERROR] Unable to read from '$SITE_REPO_URL'"
exit 1;
fi
Run Code Online (Sandbox Code Playgroud)
(注:在&>-沉默标准错误和标准输出,因此命令将不会输出任何东西)
| 归档时间: |
|
| 查看次数: |
48497 次 |
| 最近记录: |