Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Download private BitBucket repository zip file using http authentication

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:[email protected]/user/repo/get/commit.zip

However, instead of accomplishing the task it redirects to the login page on BitBucket.

like image 306
user2117190 Avatar asked Jul 16 '13 16:07

user2117190


2 Answers

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:

git archive --remote=ssh://[email protected]/your_bitbucket_username/your_repository.git --format=zip --output="name_of_your_desired_zip_file.zip" master 

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

Host bitbucket.org   StrictHostKeyChecking no   IdentityFile /home/me/.ssh/my_private_key 
like image 189
Nick Avatar answered Oct 12 '22 04:10

Nick


In order to download a zipped copy of a private Bitbucket repository from the command line, use the following:

curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

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 use curl.

For public Bitbucket repositories the command is:

curl https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip 

Or alternately, you may use wget for public repositories since no authentication is required:

wget https://bitbucket.org/<username>/<repository>/get/<branchname>.zip 

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 .bz2to download the repository in the compressed format of your choice.

like image 34
GrowlTiger Avatar answered Oct 12 '22 05:10

GrowlTiger