I'm writing a script to easily deploy an application. The code for the application is stored in a private BitBucket repository.
I'd like to be able to download a zip file of the commit. I've tried authenticating with the following code:
https://user:pass@bitbucket.org/user/repo/get/commit.zip
However, instead of accomplishing the task it redirects to the login page on BitBucket.
For those who want to download single file from private repo on bitbucket, I've tried the above but none worked. Finally I got it working with the below command:
In order to download a zipped copy of a private Bitbucket repository from the command line, use the following:
where
<username>
and<password>
are the Bitbucket account name and password,<repository>
is the repo name and<branchname>
is the branch. If you'd rather download a specific commit, use the SHA-1 hash of the commit in place of<branchname>.
The
--digest
flag is for your security, and is highly recommended. It accomplishes authentication so that your username and password are not sent in the clear. The-o
flag sends the output of the curl command to disk as a file, instead of streaming across your terminal screen.Note: Bitbucket's authentication scheme isn't compatible with
wget.
That is why you must usecurl.
For public Bitbucket repositories the command is:
Or alternately, you may use
wget
for public repositories since no authentication is required:In addition to
.zip
format, you may download repositories in.gz
and.bz2
flavors. Simply replace.zip
in the code above with either.gz
or.bz2
to download the repository in the compressed format of your choice.I found that this worked in the newer version of Bitbucket
This not true.
Bitbucket exclusively uses TLS and so at no point does anything go over the wire in clear text. As a result, Digest provides no benefit over Basic Auth. In fact, considering that Digest is server-initiated, you incur an additional server round-trip requesting the server-provided nonce.
Our use of Digest has been redundant and deprecated ever since we stopped offering unencrypted HTTP access several years ago and was kept only because there were curl-based scripts doing
--digest
as suggested by @GrowlTiger.In fact, we are about to turn off Digest altogether on May 1st, after which
curl --digest
will cease to work.More info can be found: https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/
GrowlTigers answer is great, just an update: with wget it seems to work now, too:
Personally, I didn't want to put my password into my script to accomplish this. So the trick was to run the following command, after adding your public key to your bitbucket account:
I have multiple keys on my system, if you do too, you will want to create a config file within your ~/.ssh directory that specifies to use a specific key for bitbucket connections.
~/.ssh/config