Git Workflow¶
Getting Started¶
Install the command line client, download a GUI and have a look at the basic Atlassian tutorial.
GUI¶
- SourceTree - Windows or MacOS X.
- Gitg - Linux/GNOME.
Clone the SeqAn repository¶
SeqAn is hosted on GitHub. Execute the following command to get the last sources:
~ # git clone https://github.com/seqan/seqan.git seqan-src
SeqAn Workflow¶
The SeqAn workflow is based on the Gitflow workflow by Atlassian. The workflow is based on two persistent branches: master and develop. Development of new library and app features usually occurs on develop. The master branch receives only new library and app releases, in addition to hot-fixes to previous releases. Thus, the master branch is always stable and safe to use, and the develop branch contains the last development but might occasionally break overnight. The most frequent development use cases are documented below.
Develop a feature in a module or an app¶
Follow the steps in “Mary and John begin new features” and “Mary finishes her feature”.
- Create a new feature branch based on develop.
- Perform your changes and commit them onto your feature branch.
- When the development is complete, push the feature branch to your repository on GithHub.
- Create a GitHub pull request to develop.
- Delete your feature branch once it has been merged.
Fix an existing bug in a module or app¶
Follow the steps in “End-user discovers a bug”.
- Create a new hotfix branch based on master.
- Perform your changes and commit them onto your hotfix branch.
- When the fix is ready, push your hotfix branch to repository on GitHub. Then:
- Create a GitHub pull request to master.
- Create a GitHub pull request to develop.
- The pull requests should contain only the commits from your hotfix branch.
- Delete your hotfix branch once it has been merged through the pull request.
Develop new modules and apps¶
Create a new module or app branch where to develop your new module or application. The branch should be based on master if your module or application doesn’t rely on any recently developed features. If a new feature becomes necessary later on, the branch can be rebased onto develop. When the development is complete, the branch can be merged back into the corresponding base branch - either master or develop.