【问题标题】:Bitbucket: Send a pull request via command line?Bitbucket:通过命令行发送拉取请求?
【发布时间】:2012-01-04 03:37:24
【问题描述】:

我必须发送很多拉取请求,所以我宁愿使用 bash 命令行而不是 bitbucket 的 Web 界面。

使用示例:$ git-req username

这是 Github 的这样一个脚本:http://pastebin.com/F9n3nPuu

Bitbucket 有吗?

【问题讨论】:

    标签: command-line bitbucket pull-request


    【解决方案1】:

    带有 RESTful API 2.0 的 Bitbucket 支持在没有接口的情况下管理 pull requests。在 CLI 中,您可以使用 CURL 请求它。这个older version of the documentation有更好的界面细节。

    使用 CURL 获取拉取请求数据

    要获取有关特定拉取请求的完整数据:

    $ curl --user s3m3n:bbpassword https://bitbucket.org/api/2.0/repositories/s3m3n/reponame/pullrequests/4
    

    作为回报,我会得到 JSON 以及关于我的拉取请求 #4 的完整信息(在命令中输入两次用户名、密码和 reponame)。

    使用 RESTClient 创建新的拉取请求

    要创建新的拉取请求,我们需要使用 POST 命令提供大量数据,如下所示:

    触发 Bitbucket 后立即显示拉取请求:

    使用 CURL 创建新的拉取请求

    您仍然可以使用一个衬垫创建相同的拉取请求:

    $ curl -X POST -H "Content-Type: application/json" -u s3m3n:bbpassword https://bitbucket.org/api/2.0/repositories/s3m3n/reponame/pullrequests -d '{ "title": "Merge some branches", "description": "stackoverflow example", "source": { "branch": { "name": "choose branch to merge with" }, "repository": { "full_name": "s3m3n/reponame" } }, "destination": { "branch": { "name": "choose branch that is getting changes" } }, "reviewers": [ { "username": "some other user needed to review changes" } ], "close_source_branch": false }'
    

    REST 浏览器工具(已停产)

    如果你想测试所有可能的 API 方法跳到 Bitbucket 的REST browser tool。它会在返回您的真实 repo 数据时向您显示所有可能的请求。

    【讨论】:

    • +1 大进步!我相信很快就会出现一个易于使用的命令行客户端。
    • 您对这样的客户有什么期望?创建新拉取请求的一行 CURL 非常简单,所有麻烦都是 json 作为 POST 正文,但您必须以某种方式传递所有数据。你想以其他方式如何做到这一点?
    • 我至少会为简单案例git-req username 创建一个别名。
    • 遗憾的是,REST 浏览器工具似乎已停止使用。
    • @Darktalker 这很有趣。新文档似乎很糟糕。看看我在答案顶部的链接在web.archive.org 中的样子。
    【解决方案2】:

    久经考验:

    1. 点击here生成个人访问令牌

    2. 保存唯一令牌 ID,将其附加在“Bearer in header”之后。

    例如:“授权:承载 MDg4MzA4NTcfhtrhthyt/Thyythyh”

    完整的 JSON 示例here

    Step 1 to enter the details and necessary headers

    1. 尝试运行它 Step 2

    2. BitBucket 上的输出,您将能够看到拉取请求 Final output

    命令行语法:

    curl -i -X POST    -H "Authorization:Bearer MDg4MzA4NTk/TlMSS6Ea"    -H "X-Atlassian-Token:no-check"    -H "Content-Type:application/json"    -d '{"description":"1. Changes made 2. Changes made 3. Hello hanges","closed":false,"fromRef":{"id":"refs\/heads\/branch","repository":{"name":"From Repository ","project":{"key":"ProjectName"},"slug":"From Repository "}},"state":"OPEN","title":"Merge changes from branch to master","locked":false,"reviewers":[],"open":true,"toRef":{"id":"refs\/heads\/master","repository":{"name":"RepoName","project":{"key":"ProjectName"},"slug":"RepoName"}}}'  'https://bitbucket.agile.com/rest/api/1.0/projects/projectName/repos/repoName/pull-requests'
    

    【讨论】:

    • 个人访问令牌似乎只适用于 Bitbucket 服务器?有没有办法在 bitbucket.org 上执行此操作而无需发送用户名和密码?
    【解决方案3】:

    bitbucket 上有 2 个 repos 可以提供帮助:

    Attlassian 团队有 stash (ruby):https://bitbucket.org/atlassian/bitbucket-server-cli

    哲猫有bitbucket-cli(python):https://bitbucket.org/zhemao/bitbucket-cli

    两者都有来自命令行的拉取请求功能。

    【讨论】:

    • 看哲猫,我看不到做拉取请求的方法。自从您发布答案后,此内容是否已删除?
    • @Millisami 通过 Google 来到这里,看起来具有相同的功能,而 Stash 现在似乎有了它(不知道从什么时候开始)。
    • 此功能是否存在于非 Stash 中,适用于 Bitbucket?
    • @Millisami 恐怕我草率下结论。经过进一步调查,使用bitbucket,根据this,api似乎已经到位,有些人在bitbucket-cli中似乎是working on implementing it
    • @keen Zhemao/bitbucket-cli 自 6c50435 以来确实提供了 pull_request 命令,但自述文件中没有记录。
    【解决方案4】:

    我对这个帖子的答案不太满意,所以我为它创建了一个包:

    https://www.npmjs.com/package/bitbucket-pr

    说明:

    npm i -g bitbucket-pr

    ...转到您要创建拉取请求的文件夹...

    bitbucket-pr

    【讨论】:

    • 酷!它与其他有什么不同?什么让你不满意?
    • karojosh 的答案没有合适的解决方案,s3m3n 的答案需要太多开销。我的包只是打开带有预填充信息的拉取请求的浏览器,这可能是最快的方式。
    • 很棒的工具!这为我节省了几次点击!是否可以将目标分支作为参数?
    • 很高兴您发现它很有用。它总是会转到 repo 的主分支,您可以在 bitbucket 设置中更改它。如果你真的想将目标分支作为参数,你可以做一个拉取请求。事情就像 5 行 bash,所以应该很容易破解 :)
    • 如果你提供你的 npm 模块的源代码,那就太好了,这样任何人都可以在使用它之前验证它的源代码,甚至改进它
    【解决方案5】:

    我创建了一个拉取请求 cli 实用程序来简化我的任务。

    目前,

    • 它可以从终端创建/删除pr的权利
    • 显示提升 PR 的基本差异

    我已经用 bitbucket enterprise 6.10.10 测试过了

    源码:https://github.com/psadi/bbcli

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 2019-10-19
      • 2013-07-04
      相关资源
      最近更新 更多