Skip to content
mleszczynski edited this page Sep 13, 2010 · 20 revisions

This is a document for Taskboard developers that describes development practices. It’s intended to show how do we use Kanban methodology with Git repository.

Repository branches

  1. story branches – each story or issue should be developed in it’s own branch. This branch should remain local. If there is a need to share the changes with other developers patches should be used (or pulls between developers’ repositories)
  2. dev – development branch is intended for code that is still in progress (not yet checked by Product Owner). If the implementation of story/issue is completed it’s branch should be merged to dev branch.
    This branch may contain messy and incomplete code, so it should never be merged to other branches (especially done or master).
  3. done – this should store only fully completed stories/issues. The stories/issues that where in dev branch and where successfully checked by Product Owner should be merged to done branch.
  4. master – we use master branch as a release branch – we merge the done branch to master when we do a release

Development Process

Setting up workspace

Windows users should enable autocrlf option. Check here for instructions.

  1. Clone the repository:
    git clone [email protected]:CognifideLabs/taskboard.git
  2. Go into taskboard directory (all the other commands are done there):
    cd taskboard
  3. Create and update dev and done branches:
    git checkout --track -b done origin/done
    git checkout --track -b dev origin/dev
  4. Go to done branch:
    git checkout done

Choosing a story/issue to develop

  1. Take the first card from the Queue column
  2. Move it into In progress column
  3. Add a tag with you initials to assign this issue to yourself

Developing

Create a local branch for the issue (from done branch).

  1. Make sure you are in done branch:
    git checkout done
  2. Update done branch:
    git pull origin done
  3. Create a branch for the story (let’s call it story-branch):
    git branch story-branch
  4. Move to the story branch:
    git checkout story-branch

Do all your development in the story-branch. Here is the list of some git commands that may be useful:

  1. To check what files are changed:
    git status
  2. To add files to next commit:
    git add 
  3. To commit your changes to your local repo (please add issue number to commit message):
    git commit -m “issue-666 this is some evil comment”

When you’ve developed a useful piece of code (implemented a story, fixed a bug) that is ready to be checked by Product Owner, merge your changes to dev branch.

  1. Go to dev branch:
    git checkout dev
  2. Make sure it’s up to date:
    git pull origin dev
  3. Check commits that you are about to merge:
    git log dev..story-branch
  4. If it’s OK merge your story-branch:
    git merge story-branch
  5. Push your changes to remote repository:
    git push origin dev
  6. After few minutes check your email to see if you haven’t broken the build ;)
  7. Mark story card on taskboard as Waiting for check so Product Owner will know he needs to review it

Development complete

When Product Owner accepts resolved issue he will move it’s card into Done column. Such issue should be merged into done branch, so it will be ready for next release.

  1. Go to done branch:
    git checkout done
  2. Make sure it’s up to date:
    git pull origin done
  3. Go back to your issue branch:
    git checkout story-branch
  4. Check what is new in done branch:
    git log story-branch..done
  5. Merge anything new from dev branch into your branch (resolve conflicts if any):
    git merge done
  6. Go again to done branch:
    git checkout done
  7. Check commits from your branch that you are about to merge:
    git log done..story-branch
  8. If it’s OK merge your story-branch:
    git merge story-branch
  9. Push your changes to remote repository:
    git push origin done
  10. After few minutes check your email to see if you haven’t broken the build ;)
  11. Mark story card on taskboard as Merged to done

Clone this wiki locally