我试图用curl把一个文件推送到我的版本库中名为 "collections "的文件夹中。我花了将近2天的时间来研究这个问题,但我不确定到底是什么问题。
curl -D- -k -X GET -H "PRIVATE-TOKEN: faNFKoC4-opiDJ0FJSk" https://gitlab.example.com/api/v4/projects/592/repository/tree?path=collections
get请求正常工作,我得到了collections文件夹中的文件列表。collections文件夹是我的gitlab仓库中的一个文件夹,但是当我试图将一个文件推送到那个相同的文件夹时,我得到了404。
curl -D- -k -X POST -H "PRIVATE-TOKEN: faNFKoC4-opiDJ0FJSk" -F "file=@C:/Documents/Folder_A/bp30_QA.csv" https://gitlab.example.com/api/v4/projects/592/repository/tree?path=collections
gitlab API也没有帮到我。
编辑:Bertrand Martel的解决方案帮助我解决了这个问题。
也为大家在windows上安装有问题 jq
jq是一个轻量级且灵活的命令行JSON处理器。
安装choco.jq是一个轻量级、灵活的命令行JSON处理器。https:/chocolatey.orginstall)。
以管理员身份打开powershell并运行。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
安装后,运行
choco install jq
到 建档 叫做 bp30_QA.csv
在 collections
文件夹,你可以使用下面的。
curl -H 'PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN' \
-H "Content-Type: application/json" \
-d '{
"branch": "master",
"author_email": "[email protected]",
"author_name": "John Doe",
"content": '"$(jq -Rs '.' bp30_QA.csv)"',
"commit_message": "create a new file"
}' "https://gitlab.com/api/v4/projects/592/repository/files/collections%2Fbp30_QA.csv"