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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#### 1. Get the most recent codebase

+ When you work on your first PR

  Fork the OpenMMLab repository: click the **fork** button at the top right corner of Github page
    ![avatar](../_static/community/1.png)

  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
  ```

+ After your first PR

    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

    ```bash
46
47
    git checkout master
    git pull upstream master
Miao Zheng's avatar
Miao Zheng committed
48
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
70
71
#### 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

+ Push the branch to your forked remote repository

Miao Zheng's avatar
Miao Zheng committed
72
    ```bash
73
    git push origin branchname
Miao Zheng's avatar
Miao Zheng committed
74
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
106

   + 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

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