# GitHub Usage in SOA
* TAs would like to do **code review** every week in every project. Here is the instructions.
* Week 7's code will be reviewed from `master/main` branch. Please merge the all previous code in `master/main` before working on Week 8's assignment.
## Code Review Flow Overview
TAs will start a new review process from Week 8's code

1. Create a `develop` branch from `master/main` for developing. *(green line in picture)*
1. Weekly progress may have lots of child branches. Please **create child branches from the `develop` branch** and **merge back to `develop` branch** *(orange line in picture)*
1. Hand in every week's code by **making a Pull Request (PR) from `develop` branch to `master/main` branch**.
* **IMPORTANT**: Only make this PR **ONCE** for each week.
1. Please also **make a ISSUE linking to this PR** so that the TAs could find it quickly.
*(Vertical green line in picture)*
1. The title of the issue should be like: "REVIEW Week 8"
1. The comment for the issue should say: "Please look at PR #5" for example
3. Please conduct your own review within the PR and then **complete the PR by merging it into `master/main`**
4. The TAs will **open a review on the closed PR** after the assignment deadline.
## How to create branches
### How create the `develop` branch from `master/main` branch
Switch to `master` or `main` branch, create a `develop` branch and switch to `develop` branch
```
git checkout [master|main]
git branch develop
git checkout develop
git push origin develop
```
### How to create a child branch from `develop` branch
* **HIGHLY RECOMMEND**: **Do not work on the same child branch as your teammates**; create your own child branch from `develop` branch and do your work on this branch.
Switch to `develop` branch, create a child branch and switch to child branch
```
git checkout develop
git branch <child_branch_name>
git checkout <child_branch_name>
[... do your work here ...]
git add .
git commit -m "<summarize the commit>"
git push origin <child_branch_name>
```