Bitbucket

To start using Bitbucket, go to bitbucket.org and create an account. The communication channel with Bitbucket repositories is either through SSH or HTTPS. To use SSH, you must upload your SSH key, typically the contents of the file id_rsa.pub or id_dsa.pub in the .ssh subdirectory of your home directory. Go to the page for your account, choose SSH keys, and upload one of these files. The essence of the SSH keys is that they allow you to communicate with Bitbucket without using a password, which is very convenient.

There are links to extensive help pages if you do not have such keys or if you are unfamiliar with SSH. Follow these steps on Mac or Linux machines to generate keys: 1) check that you have ssh installed; 2) create a .ssh directory in your home directory; and 3) run ssh-keygen in the .ssh directory (you are prompted for a passphrase - just write something). On Windows one applies the PuTTY and the TortoiseHG programs to generate and register keys, see the help pages on Bitbucket. Once the keys are generated, you can continue using them on any computer.

Creating a new project

Click at Repositories and at Create repository. You can now

  • fill in the name of the project, here my-project,
  • decide whether the project is private or public (the number of private repos is unlimited for yourself, but you have to pay to invite more than five users in total to share your private repos unless you are certified to be a student or work at an academic institution),
  • choose between the Git or Mercurial version control system (here we assume you run Git),
  • click whether you want issue tracking for reporting errors, suggesting improvements, etc.,
  • click whether you want a wiki page associated with the project,
  • fill in a brief description,
  • click on Create repository.

While doing this you may also want to have the Bitbucket 101 guide available.

It is now time to clone (copy) the project to your laptop. Go to the project page (you are automatically brought to the project page when creating a new project). Find the Clone button, click on it, choose SSH, copy the clone line and run this command in a terminal:

Terminal> git clone git@bitbucket.org:user/my-project.git

You must replace user with your own username at Bitbucket and my-project by the real project name.

The first time you do the clone command you may be prompted by cryptic Unix output ending with “Are you sure you want to continue connecting (yes/no)?”. Just answer yes.

The next step is to collect files and directories that should make up the project and put them in the my-project directory. Standing in the my-project directory, the following Git command is used to add all files in the current directory tree, except those having file types listed in .gitignore:

Terminal> git add .

Thereafter, the changes to the repository (here adding of files) must committed (registered):

Terminal> git commit -am 'Initial import of files.'

The text following the -am option is a required description of the changes that have taken place. This description does not matter much for this initial import of files into the repository, but is of importance for future commit commands so that you can easily track the history of your project files and inform others (and yourself) what you have done with the files.

The final step is to push the local changes to the master repo at Bitbucket:

Terminal> git push -u origin master

You must be connected to the Internet for the push command to work since it sends file information to the bitbucket.org site.

Further work with the files must always follow the pull, edit, commit, and push steps explained in the section Using Git for Git.

Collaborating

There is a button Send invitation on the project home page where you can invite other Bitbucket users to have push (write) access to your repo. Many prefer to be notified in email when changes are pushed to the repo: click the settings wheel to the right, choose Services, then Email, and fill in the email addresses that are to receive notifications on updates. Under Access management you can fill in the Bitbucket names of users who are have pull (read) or push (write) access to the repo.

User web pages

Bitbucket can host web pages associated with a Bitbucket account, but does not yet offer web pages as part of a project. Say your account/username is user. Make a new repository on Bitbucket called user.bitbucket.org. Clone it, fill it with a file, and push back, e.g.,

Terminal> git clone git@bitbucket.org:user/user.bitbucket.org.git
Terminal> cd user.bitbucket.org
Terminal> echo "Welcome to my web pages!" > test.html
Terminal> git add test.html
Terminal> git commit -am 'First web page'
Terminal> git push origin master

You can now load the URL http://user.bitbucket.org/test.html into a web browser and view the page. By creating various subdirectories you can host web pages for a series of projects in this repo.

Linking to Bitbucket files

Unfortunately, the default URL shown in your browser to a file in a Bitbucket repo contains information about the version of the file. For example, a file v1.c under Git might appear with the URL

https://bitbucket.org/user/proj/src/5fb228107044/dir/v1.c?at=master

The string 5fb228107044, called commit hash, is connected to the version of this file and will change when the file is updated. Such varying URLs are useless when you to link to the file in documents. To make a stable link to the latest version of a file (in a public repo), replace the commit hash by master and remove the final ?at=master:

https://bitbucket.org/user/proj/src/master/dir/v1.c

Other endings of the URL with commit hash, e.g., ?at=default, requires the hash to be replaced by default.