git 尝试通过REST API调用在Bitbucket中创建新文件

qvtsj1bj  于 2023-04-19  发布在  Git
关注(0)|答案(1)|浏览(156)

这是上一个问题的后续问题。我正在尝试用Javascript编写一个程序,该程序接收编码为字符串的yml文件的内容,并通过RESTful API查询将该yml文件添加到远程BitBucket服务器存储库。我已经按照本文档中的说明操作,并且能够以这种方式更新现有文件的内容。然而,尽管文档声称我应该能够以相同的方式创建一个新文件,但我却不能这样做。
我把sourceCommitId留空了,就像文档中说的那样,但它仍然需要一个尚不存在的文件路径。使用url结构“http://{baseurl}/rest/API/latest/projects/{projectKey}/repos/{repositorySlug}”或添加“/browse”会得到一个405响应。在末尾添加一个文件名会返回一个404响应,消息是“filename could not be edited because the file has been deleted on the分支”。
文档中似乎没有说明使用此方法在repo中创建新文件时应该做什么,我也无法在社区支持页面中找到任何答案。有熟悉此方法的人可以告诉我我错过了什么吗?

7uzetpgm

7uzetpgm1#

我找到了问题的答案:“/browse/”之后的url的末尾应该是你希望新文件夹在仓库中的文件路径。我的错误是我需要从body中完全删除sourceCommitId,添加一个名为“sourceBranch”的键并将其设置为你希望提交的分支,并将分支更改为您要添加文件的分支的名称(如果您想从sourceBranch创建一个全新的分支,则可以是现有的分支或新的分支)。
所以,如果我想添加一个名为“test123.yml”的文件到仓库中,我会将URL写为“http://{baseurl}/rest/API/latest/projects/{projectKey}/repos/{repositorySlug}/browse/test123.yml”。然后我会像这样设置主体:

{
  "branch": "new-branch",
  "content": "This is the contents of the new file",
  "message": "This is the commit message",
  "sourceBranch": "old-branch",
}

相关问题