Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bitbucket: Send a pull request via command line?

I have to send a lot of pull requests, so I would rather use the bash command line than bitbucket's web interface.

Usage example: $ git-req username

Here is such a script for Github: http://pastebin.com/F9n3nPuu

Is there one for Bitbucket?

like image 801
Nicolas Raoul Avatar asked Jan 04 '12 03:01

Nicolas Raoul


People also ask

How do I Create a pull request in Bitbucket using command line?

Before going any further, check and save your work on the local machine and update the branch. Then, open the Bitbucket website on your browser and navigate to the repository in question. Click on the menu button in the top-left, and select Pull Requests. Here, click on the Create pull request button.

Can you do a pull request from terminal?

First, you have to push the branch to your remote repository. Next, you have to open up the GitHub repo and click on the "New pull request" button. Then you have to manually select the branch you just published. Finally, you can start writing your PR and share it.


2 Answers

Bitbucket with it's RESTful API 2.0 supports managing pull requests without interface. In CLI you can request it with CURL. This older version of the documentation has better interface details.

Get pull request data with CURL

To get full data about specific pull request:

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

In return I get JSON with full info about my pull request #4 (put your username twice, password and reponame in command).

Create new pull request with RESTClient

To create new pull request we need to provide a lot of data with POST command, below how it looks in my RESTClient:

RESTClient Firefox

After firing Bitbucket shows pull request immediately:

Bitbucket screenshot

Create new pull request with CURL

You can still create the same pull request with one liner:

$ 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 browser tool (discontinued)

If you want to test all possible methods of API hop to REST browser tool of Bitbucket. It will show you all possible requests while returning your real repo's data.

like image 85
s3m3n Avatar answered Sep 17 '22 13:09

s3m3n


Tried and tested :

  1. Generate personal access token by clicking here

  2. Save the Unique token id, append it after "Bearer in header".

For example: "Authorization : Bearer MDg4MzA4NTcfhtrhthyt/Thyythyh "

Complete JSON sample here:

Step 1 to enter the details and necessary headers

  1. Try running it Step 2

  2. Output on BitBucket, You will be able to see the pull request Final output

Command Line Syntax:

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' 
like image 32
jasminder pal singh sehgal Avatar answered Sep 20 '22 13:09

jasminder pal singh sehgal