> For the complete documentation index, see [llms.txt](https://techbook.extraaedge.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://techbook.extraaedge.com/product-delivery-and-sprints/git-flow.md).

# Git Flow

At ExtraaEdge we use the Git as our version control and [Azure DevOps](https://extraaedge.visualstudio.com/ExtraaedgeV2Git) to manage the repositories.

We use [GitFlow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) to manage the branches and releases.

### Standard branches details

Following are the reserved branches and code can be merged on these branches by **Admins** or **Release Managers**

| *Branch*             | *Details*                                                                  |
| -------------------- | -------------------------------------------------------------------------- |
| **master**           | Main branch from where the code is deployed to production                  |
| **develop**          | All the latest updated code under development is maintained on this branch |
| **test\_release**    | Code is deployed for Testing from this branch                              |
| **staging\_release** | Code is deployed for Sanity from this branch                               |
| **uat\_release**     | Code is deployed on the flighting domain from this branch                  |
| **release-\<num>**   | Once release is deployed on production, the release branch is created      |

### **Feature Branches**

Developers need to create respective feature branches from the **develop** branches before starting a task/feature.

The feature branch is to be deleted once the PR is merged in **`develop`**

**Branch naming convention**

`<name_initials>_<ui>_task_name`

Ex: rp\_login\_session

### **Detailed Flow**

1. At time of starting any new task, developer is needed to create a new branch from **develop** and name it as given above.
2. Once task is completed, developer need to push the code on the respective feature branch.
3. A Pull Request(PR) is to be created from that branch to develop and assigned to Code Reviewers in the team.
4. Code Reviewer assigns comments to the PR and developer is expected to update and push the code again.
5. Feature branch is deleted once the code is merged in develop branch.

### Release Manager Role

1. Role of a Release Manager is to manage and monitor code merges and deployments for the particular sprint.
2. The role is rotated and assigned to a different developer in every sprint.
3. RM has to make sure that code on the standard branches is maintained and latest.
4. Every release going to QA & Staging to be given through the standard branches is the responsibility of RM.
5. RM has temporary rights to merge to above standard branches. &#x20;
