# Contributing ## Style Guide Please follow coding convention and style in each file and in each library when adding new files. Please also refer to the overall [project guidelines](./project-guidelines.md) ## Pull Requests - All development on ForestFlow should happen in a separate branch with 'develop' as the base branch. - We recommend positing issues on GitHub for features or bug fixes that you intent to work on before beginning any development. This keeps development open and conversations and feedback more collaborative. - Pull requests should be rebased on the latest dev commit and squashed to as few logical commits as possible, preferably one. Each commit should pass tests in isolation. - Please make pull requests as small and atomic as possible. We will only consider pull requests that have an associated GitHub ticket. ## Git Workflow 1. Raise a new GitHub issue if one does not already exist. Mention that you intend to work on it. 1. Use GitHub to Fork your own private repository 1. Clone your forked repo locally 1. You can optionally add ForestFlow's repo as upstream to make it easier to update your remote and local repos with the latest changes ```bash # cd into your local git copy cd ForestFlow git remote add upstream https://github.com/ForestFlow/ForestFlow.git ``` 1. Fetch latest from upstream ```bash git fetch upstream ``` 1. Create a new branch for each feature and provide a descriptive name, preferably the GitHub ticket number. This will checkout a new branch and create it simultaneously: ```bash git checkout -b github-1234 upstream/develop ``` 1. Write your feature code and update any documentation under ./docs and test it builds without errors 1. Commit and push your code branch ```bash git commit -m "Descriptive message here" git push origin github-1234 ``` 1. Create a pull request targeting the develop branch