Setting up

To contribute a change to the IGB code base, create your own fork of the IGB repository.

To create your own fork:

Next, you'll see a form that let's you give your fork a name and description. Here's an example:

Fill in the fields and click Fork repository.

After a moment, the Overview page for your forked repository will appear. Click Settings and change the main branch to the IGB development branch.

See Atlassian documentation Forking a Repository

Clone your fork

Clone a copy of your forked IGB repository onto your local computer. You will make changes to your local clone, commit them to your local repository, and then ultimately push your changes upstream to your fork.

To clone your fork, use git clone with the address of your fork. (Copy the address from the Overview page.)

Make a branch

However, before you get started, you should first create a new branch for the changes you intend to make. This will allow you to issue focused, low risk pull requests that can be easily merged with other branches of development.

To make a branch:

git checkout igb_8_3
git branch <BRANCH> 

where BRANCH is the name of the branch, e.g., IGBF-203, the name of a story in the IGB JIRA issue-tracking system.

Now, all commits will be associated with the branch you've just created. Commit your changes and then push them to your fork hosted on bitbucket.

Issue pull request

To request that your edits be incorporated into the main line of development:

A Pull request form will appear. Fill in the fields:

 

Keeping your Fork in Sync with our Repository

Bitbucket itself has some utilities which can help you pull in the latest code when you are working in their web application (see https://blog.bitbucket.org/2013/02/04/syncing-and-merging-come-to-bitbucket/); however, when working locally you will likely want to use the command line to keep your branch in sync with the remote branch you are tracking.  How to do this is really outside the scope of this article; however, a simple example will be provided for your reference.

Example

For our purposes, let's assume we are working on the master branch.

  1. Add the IGB Repository as a remote git repo with the alias "upstream"
    1. git remote add upstream git@bitbucket.org:lorainelab/integrated-genome-browser.git
  2. Fetch and Merge Changes from upstream for the master branch

    1. git pull upstream master
    2. Alternatively, you could rebase

      1. git pull --rebase upstream master
  3. For more information of git workflow see https://www.atlassian.com/git/tutorials/comparing-workflows/ or http://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows