git 在Bitbucket上编程创建Pull Request?

e5nszbig  于 2023-04-28  发布在  Git
关注(0)|答案(1)|浏览(183)

更新:好吧,我在Bash脚本中运行了这个,但我想看看我得到了什么错误代码,现在我可以看到我得到了401 Unauthorized。我使用的是我的用户名,我用admin访问bitbucket创建了个人访问令牌,所以我应该能够创建PR对吗?我可以在同一个仓库上通过Web UI做到这一点吗?

我正在运行一个bash脚本来在Bitbucket上创建一个pull request。我已经在编程地克隆repo,编辑一个文件,做一个git add/commit,现在我只需要使用CURL来创建PR。bitbucket API似乎使用POST请求公开了一个端点来执行此操作:

Creates a new pull request where the destination repository is this repository and the author is the authenticated user.

The minimum required fields to create a pull request are title and source, specified by a branch name.

curl https://api.bitbucket.org/2.0/repositories/my-username/my-repository/pullrequests \
    -u my-username:my-password \
    --request POST \
    --header 'Content-Type: application/json' \
    --data '{
        "title": "My Title",
        "source": {
            "branch": {
                "name": "staging"
            }
        }
    }'

www.example. com
下面是我的仓库在Bitbucket上的样子,我屏蔽了真实的的名字,但左边的格式是一样的(第一个名字是项目名称,REACTOR2.0,而我相信第二个名字是仓库名称,dat-repo):

我尝试了许多不同的变化,并检查远程bitbucket服务器是否有新的拉取请求,但我什么也没看到。
我确信我的“头衔”和“分支”是正确的。我唯一的问题是关于URL;我从bitbucket输入我的用户名,如果你去“管理帐户”,然后“名称”,这是我用于URL的my-username部分的字段,我正在为my-repository部分添加存储库名称。然而,我需要注意的是,这是一个在bitbucket上的存储库嵌套在一个名为“REACTOR 2”的项目中。0”,所以我不确定是否需要在URL中指定项目名称。
有没有人成功地使用了这个API?我在google上看了一下,但很多问题都是用旧的1。0 API和不适用或人们做GET请求做简单地得到一个列表的拉请求。...

3pmvbmvn

3pmvbmvn1#

我使用了错误的API。有一个BitBucket云API,用于托管在bitbucket上的存储库,其URL为www.example www.example.com 和一个BitBucketServerAPI,用于像https://bitbucket.mycompanyname.com/这样的URL,这是我需要使用的API。
最后,URL应该是这样的(您需要填写YourCompanyNameYourProjectKeyYourRepositoryName参数):

https://bitbucket.YourCompanyHostName.com/rest/api/1.0/projects/YourProjectKey/repos/YourRepositoryName/pull-requests

JSON来发布:

{
    "title": "Talking Nerdy",
    "description": "It’s a kludge, but put the tuple from the database in the cache.",
    "state": "OPEN",
    "open": true,
    "closed": false,
    "fromRef": {
        "id": "refs/heads/feature-ABC-123",
        "repository": {
            "slug": "my-repo",
            "name": null,
            "project": {
                "key": "PRJ"
            }
        }
    },
    "toRef": {
        "id": "refs/heads/master",
        "repository": {
            "slug": "my-repo",
            "name": null,
            "project": {
                "key": "PRJ"
            }
        }
    },
    "locked": false,
    "reviewers": [
        {
            "user": {
                "name": "reviewersName1"    
            }
        },
         {
            "user": {
                "name": "reviewerName2" 
            }
        }
    ]
}

如果你选择通过CURL来调用API,你可以用类似下面的代码来表达这个请求:

curl -H "Authorization: Basic EncryptedBase64UsernamePasswordHere" \
  -H "Content-Type: application/json" \
  "https://bitbucket.YourCompanyName.com/rest/api/1.0/projects/YourProjectKey/repos/YourRepositoryName/pull-requests" \
  -d JsonDataFromAboveHere

您可以在下面阅读更多关于身份验证的信息,但是您可以在CURL请求中使用-u username:password进行身份验证 *,或者 * 您可以将username:password字符串和base64编码,然后使用-H "Authentication: Basic BASE64ENCODEDUSERNAMEPASSWORDHERE",由您决定。您可能需要使用下面的代码来转义JSON双引号“,这取决于您发出此请求的机器类型,如下所示:

"{\"title\": \"Talking Nerdy\",
    \"description\": \"It’s a kludge, but put the tuple from the database in the cache.\",
    \"state\": \"OPEN\",
    \"open\": true,
    \"closed\": false,
    \"fromRef\": {
        \"id\": \"refs/heads/feature-ABC-123\",
        \"repository\": {
            \"slug\": \"my-repo\",
            \"name\": null,
            \"project\": {
                \"key\": \"PRJ\"
            }
        }
    },
    \"toRef\": {
        \"id\": \"refs/heads/master\",
        \"repository\": {
            \"slug\": \"my-repo\",
            \"name\": null,
            \"project\": {
                \"key\": \"PRJ\"
            }
        }
    },
    \"locked\": false,
    \"reviewers\": [
        {
            \"user\": {
                \"name\": \"reviewerName1\" 
            }
        },
         {
            \"user\": {
                \"name\": \"reviewerName2\" 
            }
        }
    ]
}"

如果你想添加审阅者但不知道他们的名字,你可以对上面的同一个URL发出GET请求,它会给予一个用户列表,然后可以将他们的名字添加到审阅者数组中,这样当PR被创建时,他们已经被添加为审阅者。
认证:https://developer.atlassian.com/server/bitbucket/how-tos/example-basic-authentication/
Rest API:https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/
PullRequest: www.example.com

相关问题