I use GitHub for our development codebase. It's our single source of truth where we push all our application code.
The tool is valuable because it helps us work in a distributed environment with multiple people across different locations and time zones. We have a common repository that everyone works on, which would be tough to manage manually. GitHub helps us maintain this single source of truth. Everyone can check out their own branches, which is important for our branching strategies. We can fork, check out feature branches, work on our code, and merge back into parent branches for deployment. This is crucial when multiple people are working on the same codebase.
We have a main branch and a release branch for branch protection that no one can directly access or commit to. Everyone must use a feature branch. For each release, we check out a release branch. Code from feature branches is committed, and then we raise a PR. At least two people must approve the PR to merge into the release branch. Once deployed and stable, we merge into the main branch. These branches are secured, and no one can make direct commits. Everyone must check out a branch, raise a PR, and get approval from two team members before merging. This ensures clear restrictions on who makes changes and if they're approved.
We use a peer review process for code reviews. When I make a change, I send it to the team. One or two people review the code, make suggestions or comments, and then approve it for merging. We do this through feature branches and PRs, which are where our code reviews happen.
The solution has contributed to reducing project delivery times and costs. For example, if five people are working on one application, each developing a feature, merging code into a common repository becomes complex without a tool like GitHub. The manual process of each person sitting with four others to review changes is time-consuming and prone to human errors, which can be problematic when moving code to production. The solution has solved this major challenge.