# PR Guideline ## Important Notes and Regulations 1. *It is strictly forbidden to APPROVE and COMPLETE your own PR that has not been code reviewed by other RD* > If you violate it, you will be critized by the team!! 2. Before creating a PR, please remember to Rebase your own branch first 3. The following are the requirements to complete a PR based on repo | **Repo** | **Approve** | **Other Conditions** | | -------- | -------- | -------- | | Lib | 1 person | without any Active,Pending | | Master | 1 person | without any Active,Pending | | Agent | 1 person | without any Active,Pending | | DB-KR | 2 person | without any Active,Pending | 4. Not allowed to use **Set auto-complete** ![](https://i.imgur.com/RxAIbiV.png) 5. Reviewers * TD, Jenny, Jerry, Marc, Brogan, Yuwei (When adding a new PR, these members are assigned by default) * If the members above are not able to help with Code Review, you may add other members as reviewer after PR has been created. 6. After 12:00 noon on the Monday of the weekly release, you are not allowed to create PR, and not allowed to click **Complete** * PR can be created after 11:30 Tuesday of the release week. This is when the release candidate has been branched out * If the PR is **Approved** before the release, please be careful to not press **Complete** 7. Please be sure to pass the following Reviewer check list before submitting the PR. Reviewer will pay attention to the following things: * Solution is build-able * Changes are working as expected * Changes fulfill all the requirements specified in the TASK * Variable names must be meaningful * Appropriate comments are in place * The response time for any API shall not exceed 2 seconds ## Request PR ## 1. How to add PR 1. Make sure you are on your feature branch * klFeature/{YYYYMM}/{feature name} * Push to origin 2. Create a Pull Request * The bottom of the Repos sub-menu, click Pull Request -> Create a Pull Request ![](https://i.imgur.com/ToGPZJh.png) * Fill in Title -> you can use the trello title * Fill in Description -> Trello TASK title and link ![](https://i.imgur.com/PGPzS1L.png) * **Add commit messages** can automatically list down all your commit items * Press **Create** ![](https://i.imgur.com/CVy9x42.png) 3. Notify reviewer to do Code Review * Sample request to group: ``` Code Review Trello Task: Master-資訊看板調整-PART2(焦點資訊) (https://trello.com/c/zi5N9Wgs) Lib https://dev.azure.com/stackcore/PlatformKR/_git/Lib/pullrequest/258 Master https://dev.azure.com/stackcore/PlatformKR/_git/Master/pullrequest/257 請相關人員協助,感謝 ``` ## 2. Fix feedback and update it to PR 1. Make changes on your current branch and do a SourceTree PUSH 2. On the PR page, if some feedbacks are not bugs, please leave a message so that reviewer can reconfirm and update the status ![](https://i.imgur.com/MrjqUxd.png) ## 3. Merge conflict after creating PR ![](https://i.imgur.com/EFtVMLJ.png) Go back to SourceTree and perform **REBASE** 1. [REBASE Guide](https://hackmd.io/Hy90AGsTs) 2. After performing rebase, delete the remote branch ![](https://i.imgur.com/TgIrK0R.png) 3. PUSH the branch to remote again 4. On the PR page you will see that Merge conflicts will change to No merge conflicts ![](https://i.imgur.com/6yFDcnZ.png) ## 4. How to abandon a PR If you have accidentally created a PR, you can Abandon it ![](https://i.imgur.com/X5Eztgy.png) After abandoning you can choose whether you want to delete the remote branch ![](https://i.imgur.com/US9qSGm.png) ## 5. How to add another reviewer to the PR If all the added reviewers are busy, you may add another reviewer ![](https://i.imgur.com/m1lnQMb.png) ## 6. Complete and delete branch 1. After completing and opt to Delete branch after merging, your branch still appears on your SourceTree ![](https://i.imgur.com/0LlsVhD.png) It is because you need to click **Fetch** and tick the **Prune tracking branches no longer present on remote(s)** ![](https://i.imgur.com/z5qM2YR.png) ## 7. How to create a PR for Hotfix Example: **Hotfix on release/3.74** 1. Create a new branch from release/3.74 2. klHotfix/3.74/{Brief description of the changes} 3. When creating a PR, by default, it will be from your branch to master, but we want to hotfix into release/3.74, so please adjust it to the correct target branch. ![](https://i.imgur.com/bGKxZt4.png) 4. After it is completed, you may **cherry-pick** back to master ## Review PR ## 1. Problem with the code 1. After receiving PR, go to **Azure DevOps -> Repos -> {Repo Name} -> Pull request** ![](https://i.imgur.com/3fy5nUs.png) 2. Click **Files** tab to view all updated files, highlight the problematic part and click **+** to leave a message for the RD. (Note: If it is not an issue, and you only want to leave a message, you may write it in the Overview section) This is an example of a PR with 2 active comment that needs to be resolved ![](https://i.imgur.com/c1YajZq.png) 3. Review is completed, now you may change the status to **Wait for author** ![](https://i.imgur.com/VHPjyzJ.png) ## 2. Revision 1. When RD has come back with the changes, and you have confirmed that it is okay, you may click **Reply & Resolve** ![](https://i.imgur.com/ePlXNmg.png) 2. When all comments are resolved, you may press **Approve** 3. If there are unresolved comments, PR cannot be completed