pr.md 3.57 KB
Newer Older
Miao Zheng's avatar
Miao Zheng committed
1
2
3
4
5
6
## Pull Request (PR)

### What is PR

`PR` is the abbreviation of `Pull Request`. Here's the definition of `PR` in the [official document](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) of Github.

7
8
9
```
Pull requests let you tell others about changes you have pushed to a branch in a repository on GitHub. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add follow-up commits before your changes are merged into the base branch.
```
Miao Zheng's avatar
Miao Zheng committed
10

Zaida Zhou's avatar
Zaida Zhou committed
11
### Basic Workflow
Miao Zheng's avatar
Miao Zheng committed
12
13
14
15
16
17
18
19
20
21

1. Get the most recent codebase
2. Checkout a new branch from the master branch
3. Commit your changes
4. Push your changes and create a PR
5. Discuss and review your code
6. Merge your branch to the master branch

### Procedures in detail

22
23
#### 1. Get the most recent codebase

24
- When you work on your first PR
25
26

  Fork the OpenMMLab repository: click the **fork** button at the top right corner of Github page
27
  ![avatar](../_static/community/1.png)
28
29
30
31
32
33
34
35
36
37
38
39
40

  Clone forked repository to local

  ```bash
  git clone git@github.com:XXX/mmcv.git
  ```

  Add source repository to upstream

  ```bash
  git remote add upstream git@github.com:open-mmlab/mmcv
  ```

41
- After your first PR
42

43
  Checkout master branch of the local repository and pull the latest master branch of the source repository
Miao Zheng's avatar
Miao Zheng committed
44

45
46
47
48
  ```bash
  git checkout master
  git pull upstream master
  ```
Miao Zheng's avatar
Miao Zheng committed
49

50
51
52
53
54
55
#### 2. Checkout a new branch from the master branch

```bash
git checkout -b branchname
```

Zaida Zhou's avatar
Zaida Zhou committed
56
57
58
```{tip}
To make commit history clear, we strongly recommend you checkout the master branch before create a new branch.
```
Miao Zheng's avatar
Miao Zheng committed
59

60
61
62
63
64
65
66
67
68
69
#### 3. Commit your changes

```bash
# coding
git add [files]
git commit -m 'messages'
```

#### 4. Push your changes to the forked repository and create a PR

70
- Push the branch to your forked remote repository
71

72
73
74
  ```bash
  git push origin branchname
  ```
Miao Zheng's avatar
Miao Zheng committed
75

76
77
- Create a PR
  ![avatar](../_static/community/2.png)
Miao Zheng's avatar
Miao Zheng committed
78

79
- Revise PR message template to describe your motivation and modifications made in this PR. You can also link the related issue to the PR manually in the PR message (For more information, checkout the [official guidance](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)).
Miao Zheng's avatar
Miao Zheng committed
80

81
#### 5. Discuss and review your code
Miao Zheng's avatar
Miao Zheng committed
82

83
84
- After creating a pull request, you can ask a specific person to review the changes you've proposed
  ![avatar](../_static/community/3.png)
Miao Zheng's avatar
Miao Zheng committed
85

86
- Modify your codes according to reviewers' suggestions and then push your changes
Miao Zheng's avatar
Miao Zheng committed
87

88
89
90
91
92
93
#### 6.  Merge your branch to the master branch and delete the branch

```bash
git branch -d branchname # delete local branch
git push origin --delete branchname # delete remote branch
```
Miao Zheng's avatar
Miao Zheng committed
94
95
96
97

### PR Specs

1. Use [pre-commit](https://pre-commit.com) hook to avoid issues of code style
98

Miao Zheng's avatar
Miao Zheng committed
99
2. One short-time branch should be matched with only one PR
100

Miao Zheng's avatar
Miao Zheng committed
101
3. Accomplish a detailed change in one PR. Avoid large PR
102

103
104
105
   - Bad: Support Faster R-CNN
   - Acceptable: Add a box head to Faster R-CNN
   - Good: Add a parameter to box head to support custom conv-layer number
106

Miao Zheng's avatar
Miao Zheng committed
107
4. Provide clear and significant commit message
108

Miao Zheng's avatar
Miao Zheng committed
109
5. Provide clear and meaningful PR description
110

111
112
113
114
   - Task name should be clarified in title. The general format is: \[Prefix\] Short description of the PR (Suffix)
   - Prefix: add new feature \[Feature\], fix bug \[Fix\], related to documents \[Docs\], in developing \[WIP\] (which will not be reviewed temporarily)
   - Introduce main changes, results and influences on other modules in short description
   - Associate related issues and pull requests with a milestone