Using SourceTree and Git for Research (Part 2): Bitbucket

In the first part of this tutorial we created a local git repository with SourceTree, committed a change, and reviewed the commit history. Make sure you have either already completed the previous part of this tutorial, or that you already have a repository on SourceTree you want to link up with Bitbucket.org.

Making a remote version on Bitbucket

While you can create a new remote repository to connect to on Bitbucket.org, here we will do this from within SourceTree. Open SourceTree and click the “Settings” button. settings Click “Add”. remotes Click the button with a globe icon. globe Click the “Create New Repository …” button. create_new_button Fill out the new repository dialog. Set “Name” to “itn_project“, add a description if desired, and make sure to uncheck the “Publicly Visible” option. Finally, click “Create Repository”. create_new_dialog Notice that now you have an entry in your list for “itn_project” that is hosted by Bitbucket. Click “OK”. link_repository Set “Remote Name” to “itn_remote” and click “OK”. remote_name Click “OK” one last time. Finally, click the “Push” button to push the repository you have been working on to the remote one you just created. push_repo Make sure the “Local Branch” “master” is checked. Then click “OK”. Enter your password if requested to push the repository. push_repo2

Inviting a collaborator

Go to Bitbucket.org and login. Click on the “Repositories” menu at the top and choose your newly created repository. online_repo You should now see something like the following screenshot. This shows that your repository has been setup on Bitbucket.org. online_repo_overview Click the “Share” button. bitbucket_share Next, enter the email address (or Bitbucket username if you know it) of the collaborators you want to add to this repository (i.e. your coauthors) and then click the “Add” button. Here, I’m going to add Joseph Page (full disclosure: he’s my brother). bitbucket_share2 Before clicking “Share”, set the permissions of this new user of your repository. I set Joseph’s permissions to “WRITE” because I want him to be able to push commits to the repository (see the documentation for more details on permissions). bitbucket_share3 Click “Share” to invite your new collaborator. This will send a link which your collaborator can use to access the repository. Once they login to Bitbucket they will be able to access your repository.

Viewing a collaborator’s commit

Once your collaborator has pushed a commit (i.e. made changes and updated the repository) you will see this on the main page for your repository. collab_edit You can see Joseph left the following commit message:

made a few edits and added author name

Click on the link to the commit (see picture below). collab_edit2 This pulls up the summary of the latest commit. Scroll down to view the changes that were made. collab_edit3

Conclusion

This tutorial (and the previous one) merely scratched the surface of how leveraging DVCSs, such as git and hg, can enhance your research productivity. Using SourceTree, integrating these tools is easier than ever. Have fun with Bitbucket and let me know if you have any questions in the comments below!

Using SourceTree and Git for Research (Part 1)

A Version control system (VCS) helps you manage changes to documents and programs. This goes beyond using Track Changes in Microsoft Word. For example, you can revert to older versions of a LaTeX document or program written in Stata, SAS, or R. With a distributed version control system (DVCS), you can track changes to all your documents and programs while collaborating with coauthors. Bitbucket offers for free an unlimited number of private repositories with up to 5 collaborators. If you authorize an academic (*.edu) email account you get unlimited contributors! A popular alternative is Github, but since Github does not offer free private repositories (and keeping your research private is important!) we will use Bitbucket. Bitbucket makes use of two DVCSs: Mercurial (Hg) and Git. We’ll be using Git for this tutorial, but you could use Mercurial instead if you prefer (intro to working with Mercurial). To make using git (and hg) a breeze, we will be using SourceTree, the free tool by Atlassian (makers of Bitbucket). Using a DVCS allows you to link a repository to the documents on your local machine. This repository will allow you to track changes to your documents and keep a record of your document history. To see how this system works. This tutorial will trace the following steps:

  1. Set up a project folder with a basic LaTeX file.
  2. Set up a Bitbucket account.
  3. Install SourceTree.
  4. Create a git repository using SourceTree.
  5. Make a change to our LaTeX file.
  6. Summarize basic features for reviewing changes.

Part 2 of this tutorial will cover connecting this repository to a Bitbucket.org repository to put the D in DVCS and take a look at collaborating with coauthors.

Step 1: Setup LaTeX file

  1. Create a new LaTeX file named “itn.tex”.
  2. Place this file in a folder that will only be used for this project.
  3. Place the following sample text in the file and save it.
    \documentclass{article} \title{International Trade Network} \author{Jonathan Page} \begin{document} \maketitle{} \section{Introduction} Careful analysis of the topology of the international trade network (ITN) is necessary in order to identify stylized facts which a theoretic network model of international trade should be able to replicate. Properties of networks are tightly related to the relevant network formation process. Determining the most appropriate network formation process can provide depth to related empirical analysis. \end{document}

Step 2: Setup a Bitbucket account

Go to bitbucket.org and sign up for a new account (if you don’t already have one). bitbucket_frontpage

Step 3: Install SourceTree

Go to http://sourcetreeapp.com/ and click the large “Download SourceTree Free” button in the middle of the page. Your button may appear different if you are using Windows. SourceTree Click the downloaded dmg file and drag the SourceTree application to your Applications folder. installSourceTree Open the SourceTree application. You will see a screen similar to the one below. Fill this form out with your fullname and the email address you used to setup your Bitbucket account. Make sure both check boxes are checked to allow SourceTree to manage your Mercurial and Git configurations and to agree to the license agreement. Click “Next”. Setup_SourceTree Enter your Bitbucket account information and click “Next”. Setup2_SourceTree Click “Finish” to complete the initial setup process.

Step 4: Setup your repository

Open finder and find the folder that contains your LaTeX file. Drag this folder onto the SourceTree application window. This will open the following dialog. new_repo_dialog Change the “Repository Type” from “Mercurial” to “Git” (you can also change the default bookmark name if you like). Click “Create”.

Add “itn.tex” to the staging area

Double-click the project to open the project view. Click “Add” to add all files in the folder to the repository. project_view Notice that “itn.tex” has been moved from “Files in the working directory” to “Files staged in the index”. This means that if we commit changes, changes to “itn.tex” will be updated to the repository. itn_staged

Commit to initialize the repository

Press the “Commit” button. commit This will bring up the dialog seen below. Add a meaningful message (always a good idea). Click “Commit”. commit_message

Step 5: Making a change to the LaTeX file

Now we want to see how this version control system deals with changes. Add the following paragraph to “itn.tex”:

In the analysis of international trade as a network phenomenon, we must answer the question of how the network structure is determined. More precisely, if we assume the network structure is given to us exogenously, our analysis will focus on the game played on the given network. If, however, the formation of the network structure is endogenous, our analysis must broaden to consider the formation process. This survey focuses on what information the network itself can provide regarding the formation process.

Save “itn.tex”. Open the SourceTree application. Notice that “itn.tex” now has a new icon beside it to indicate it has been changed. modified Click the file. This will show the changes you have made on the right. click_file_stage Click “Stage File” or “Add”. Click “Commit”, choose an appropriate message and click “Commit” to commit these changes to your repository.

Step 6: Viewing your history

Click the clock symbol to view the log. log_view Click the two log entries to see the changes that were added at each commit. Click “External Diff” to open another view of the differences between the selected commit and the one preceding it. Close the “External Diff” window. log_view2

Next Steps

We’ve covered quite a bit here, but there is much more to learn. Though our example worked with a LaTeX source file, you could follow the same process with any filetype. In fact, version control systems were developed with programmers in mind. As a result this is the perfect way to manage your source files for Stata, SAS, R, Python, HTML, etc. Here are a few git resources to get you started:

Be sure to check out the next part of this tutorial as we connect our repository to the Bitbucket site and collaborate with a coauthor. Any tips or nagging questions? I would love to hear them!