3

私は、powershell を使用して新しい git リポジトリの作成を自動化しようとして行き詰まりました。

私が理解しているように、URLでPOSTメソッドを使用して新しいリポジトリを作成します

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

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

変更するには管理者である必要があるため、webrequest に認証ヘッダー フィールドを追加します。

$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 要求の場合)。

これによると、それは正しいステートメントである必要があります。

このスラッグまたは scmId とは正確には何ですか (誰かが聞いたことがあります)。

Web サービスを使い始めたばかりの私に、あなたの天才の 1 人が正しい方向性を教えてくれたら幸いです。

ありがとう、マイケル

4

2 に答える 2

1

私の2セント。

これは、アトラシアンの問題に関する質問への回答ではなく、回答から詳細を確認する方法に関する一般的なガイダンスです。

$response = try {
    Invoke-RestMethod -Method Post `
              -Headers @{ Authorization="Basic $Base64Creds" } `
              -Uri $CreateRepoUri `
              -ContentType 'application/json' `
              -Body @{ slug='test'; name='RestCreatedRepo';}
} catch {
    $_.Exception.Response
}

$response失敗の実際の理由を調べることができます。

于 2014-07-09T16:42:31.393 に答える