gpt4 book ai didi

gitlab - 如何使用 REST API 在 GitLab 中创建文件,如果存在同名文件,则覆盖旧文件

转载 作者:行者123 更新时间:2023-12-05 03:30:18 25 4
gpt4 key购买 nike

如何使用 REST API 在 GitLab 中创建文件,如果存在同名文件,则覆盖旧文件。 “创建”操作会自动为我执行此操作吗? https://docs.gitlab.com/ee/api/commits.html

例如我想上传 XXX/YYY/A.txt,如果 XXX/YYY/A.txt 已经存在,则将 A.txt 替换为新的 A.txt,如果不存在,请使用提供的内容创建一个。

最佳答案

当您向 Commits API 发出请求时,您必须指定操作,如果您想创建一个新文件,操作将是创建
如果文件已经存在,gitlab 将拒绝请求并响应

{"message":"A file with this name already exists"}

所以payload中的action应该和repo状态一致。

我们可以在这里使用一个脚本,它将尝试使用 2 个有效负载提交文件。一个指定创建 操作,另一个指定更新 操作。

创建.json

{

"branch": "target branch",
"commit_message": "some commit message",
"actions": [
{
"action": "create",
"file_path": "XXX/YYY/A.txt",
"content": "some content new"
}]
}

更新.json

{

"branch": "target branch",
"commit_message": "some commit message",
"actions": [
{
"action": "update",
"file_path": "XXX/YYY/A.txt",
"content": "some content new"
}]
}

脚本最初会尝试创建操作,如果失败,它将尝试更新操作。例如

#!/bin/bash
curl -s -w -XPOST --header "Content-Type: application/json" --header "PRIVATE-TOKEN: <access_token" --data "@create.json" https://gitlab.com/api/v4/projects/<project_id>/repository/commits | grep -o message
if [ $? -eq 0 ]
then

curl -s -w -XPOST --header "Content-Type: application/json" --header "PRIVATE-TOKEN: <access_token" --data "@update.json" https://gitlab.com/api/v4/projects/<project_id>/repository/commits
fi

关于gitlab - 如何使用 REST API 在 GitLab 中创建文件,如果存在同名文件,则覆盖旧文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70859310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com