This document outlines the workflow that one should follow when developing on this repo.
First, you will have been assigned to a GitHub issue associated to the steelhead repo that will look something like this:
This issue will generally have the following sections, a section describing the reason for the issue and what should be done to resolve it, a set of resources that might come in handy, a set of notes that should be taken into consideration when developing, and a set of tasks which break the issue up into smaller components. These tasks are meant to guide you through the issue, but are not concrete and are simply there to help keep you on track. Feel free to add to or modify the tasks as you see fit. To start working on the issue, you must branch off from the latest state of the main branch of steelhead as such (NOTE: In some cases, you will be branching off of someone else's branch, keep track of if you do this and let a team lead know before submitting a pull request as you will have to merge with the other branch before main as shown later on)
cd <PATH_TO_STEELHEAD>/steelhead
git checkout main
git pull
git checkout -b <YOUR_FIRST_NAME>/<APPROPRIATE_LABEL>
Note that <PATH_TO_STEELHEAD> should be substituted to what it is on your machine, <YOUR_FIRST_NAME> should be substituted as your first name, and <APPROPRIATE_LABEL> should be some short label that describes the changes you made.
To update the state of your branch, follow the basic add, commit, and push workflow in git. Here is a tutorial on that if you are new to git. Once you are have completed the tasks given in the issue, and are sure that it follows the conventions (make sure you add/edit any package documentation as stated here) you are asked to follow, it is time to make a pull request. Go to the steelhead repo on GitHub, make sure you are viewing the branch which you are trying to make a pull request for, and you should see a button which says "Contribute", which leads to a "Open pull request" button (GitHub also prompts you to compare and make pull request on branches that had recent pushes, as seen highlighted below):
Make sure that you link the pull request to the corresponding issue by including the keyphrase Closes #<N> somewhere in your PR.
Once filling out this pull request, you will then wait for it to be approved. The approver might ask you to make some changes to your branch, or you might have to change something if the build and test checks do not pass when you open the pull request. Note that the pull request will update as you push to your branch, and that we don't allow merges without review.
Once all checks are passing and the pull request is accepted, it will be merged into the main branch. After it has been merged and you are assigned a new issue, proceed with the same process as given above. Make sure that you DON'T branch off of your last issue's branch and that you checkout and pull from main before branching off for your next issue.



