gpt4 book ai didi

git - 使用 rest 和 powershell 创建 atlassian stash repo

转载 作者:太空狗 更新时间:2023-10-29 14:07:36 28 4
gpt4 key购买 nike

我在尝试使用 powershell 自动创建新的 git 存储库时遇到了僵局。

据我所知,一个人使用 URL 上的 POST 方法创建新的 repo

/rest/api/1.0/projects/$ProjectKey/repos  

https://developer.atlassian.com/static/rest/stash/3.0.1/stash-rest.html#idp1178320

因为你必须是管理员才能修改内容,所以我向 webrequest 添加了一个授权 header 字段。

$ByteArr      = [System.Text.Encoding]::UTF8.GetBytes('admin:pwd')
$Base64Creds = [Convert]::ToBase64String($ByteArr)

$ProjectKey = 'SBOX'
$CreateRepoUri = "$BaseUri/rest/api/1.0/projects/$ProjectKey/repos/"
Invoke-RestMethod -Method Post `
-Headers @{ Authorization="Basic $Base64Creds" } `
-Uri $CreateRepoUri `
-ContentType 'application/json' `
-Body @{ slug='test'; name='RestCreatedRepo';}

但是在执行时我得到一个内部服务器错误(500)。没有关于确切原因的更多详细信息或 InnerExceptions。

使用 GET 检索存储库列表有效,因此身份验证有效(至少对于 Get 请求)

据此,应该是正确的说法:

这个 slug 或 scmId(有人听说过)到底是什么?

如果你们中的一位天才能在我刚刚开始使用网络服务时为我指明正确的方向,那就太好了。

谢谢,迈克尔

最佳答案

REST API documentation周围有点模糊,但我认为您不能根据 this section 设置存储库 slug .两者都没有具体说明您可以或不能更改 slug,而是使用名称进行演示,并提示如果名称更改,slug 可能会发生变化。

The repository's slug is derived from its name. If the name changes the slug may also change.

在示例中,创建了一个名称为“My Repo”的存储库,导致 slug 成为“my-repo”。所以,我相信 slug 基本上是存储库名称的“规范化”版本。 ScmId 标识用于存储库的源代码控制管理类型(例如“git”)。

对于您的请求正文,我也不确定 Invoke-RestMethod 是否会自动为您将其转换为 JSON。为此,您可以使用 ConvertTo-Json Cmdlet,或者在较小的情况下,只需手动创建 JSON 字符串。这对我有用:

$baseUrl = 'http://example.com'
$usernamePwd = 'admin:passwd'
$project = 'SBOX'
$repoName = 'RestCreatedRepo'

$headers = @{}
$headers.Add('Accept', 'application/json')

$bytes = [System.Text.Encoding]::UTF8.GetBytes($usernamePwd)
$creds = 'Basic ' + [Convert]::ToBase64String($bytes)
$headers.Add('Authorization', $creds)

$data = '{"name": "{0}","scmId": "git","forkable": true}' -f $repoName
$url = '{0}/rest/api/1.0/projects/{1}/repos' -f $baseUrl,$project
$response = try {
Invoke-RestMethod -Method Post `
-Uri $url `
-Headers $headers `
-ContentType 'application/json' `
-Body $data
} catch {
$_.Exception.Response
}

关于git - 使用 rest 和 powershell 创建 atlassian stash repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24655749/

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