我需要克隆 Azure 项目中的所有现有存储库来执行一些搜索。然后尝试以下代码:
#!/bin/bash
ORGANIZATION="abc"
PROJECT="cdf"
PAT="fgh"
az devops login --organization "https://dev.azure.com/$ORGANIZATION"
REPOS=$(curl -s -H "Authorization: Basic $(echo -n :$PAT | base64)" \
"https://dev.azure.com/$ORGANIZATION/$PROJECT/_apis/git/repositories?api-version=6.0" \
| jq -r '.value[].sshUrl')
for REPO in $REPOS; do
git clone $REPO
done
但是我在所有尝试中都收到以下错误:
Please make sure you have the correct access rights
and the repository exists.
Cloning into 'some-repo'...
remote: Public key authentication failed.
fatal: Could not read from remote repository.
我使用的令牌是正确的,我今天实际上用它来克隆存储库、发送提交等。 我究竟做错了什么?或者我可以使用什么其他方法。
更改您的 Bash 脚本,如下所示:
#!/bin/bash
org="{organization}"
proj="{project}"
pat="{PAT}"
uri="https://dev.azure.com/$org/$proj/_apis/git/repositories?api-version=7.0"
az devops login --org https://dev.azure.com/$org <<EOF
$pat
EOF
repos=$(curl -X GET -u :$pat $uri -H 'Accept: application/json' | jq -r '.value[].remoteUrl')
for repo in $repos; do
echo "Clone repository: $repo"
git clone "$repo"
done