mirror of https://github.com/apache/druid.git
commit
6ef3a762b6
|
@ -0,0 +1,121 @@
|
|||
# How to Contribute
|
||||
|
||||
## GitHub Workflow
|
||||
|
||||
1. Fork the druid-io/druid repository into your GitHub account
|
||||
|
||||
https://github.com/druid-io/druid
|
||||
|
||||
2. Clone your fork of the GitHub repository
|
||||
|
||||
```sh
|
||||
git clone git@github.com:<ghuser>/druid.git
|
||||
```
|
||||
|
||||
Add a remote to keep up with upstream changes
|
||||
|
||||
```
|
||||
git remote add upstream https://github.com/druid-io/druid.git
|
||||
```
|
||||
|
||||
If you already have a copy, fetch upstream changes
|
||||
|
||||
```
|
||||
git fetch upstream
|
||||
```
|
||||
|
||||
3. Create a feature branch to work in
|
||||
|
||||
```
|
||||
git checkout -b feature-xxx remotes/upstream/master
|
||||
```
|
||||
|
||||
4. Work in your feature branch
|
||||
|
||||
```
|
||||
git commit -a
|
||||
```
|
||||
|
||||
5. Periodically rebase your changes
|
||||
|
||||
```
|
||||
git pull --rebase
|
||||
```
|
||||
|
||||
6. When done, "squash" your commits
|
||||
|
||||
```
|
||||
git rebase -i upstream/master
|
||||
```
|
||||
|
||||
Prefix commits using `s` (squash) or `f` (fixup) to merge extraneous commits.
|
||||
|
||||
7. Submit a pull-request
|
||||
|
||||
```
|
||||
git push origin feature-xxx
|
||||
```
|
||||
|
||||
Go to your Druid fork main page
|
||||
|
||||
https://github.com/<ghuser>/druid
|
||||
|
||||
If you recently pushed your changes GitHub will automatically pop up a
|
||||
`Compare & pull request` button for any branches you recently pushed to. If you
|
||||
click that button it will automatically offer you to submit your pull-request
|
||||
to the druid-io/druid repository.
|
||||
|
||||
- Give your pull-request a meaningful title.
|
||||
- In the description, explain your changes and the problem they are solving.
|
||||
|
||||
8. Addressing code review comments
|
||||
|
||||
Repeat steps 4. through 6. to address any code review comments and
|
||||
rebase your changes if necessary.
|
||||
|
||||
Push your updated changes to update the pull request
|
||||
|
||||
```
|
||||
git push origin [--force] feature-xxx
|
||||
```
|
||||
|
||||
`--force` may be necessary to overwrite your existing pull request in case your
|
||||
commit history was changed when performing the rebase.
|
||||
|
||||
Note: Be careful when using `--force` since you may lose data if you are not careful.
|
||||
|
||||
```
|
||||
git push origin --force feature-xxx
|
||||
```
|
||||
|
||||
|
||||
# FAQ
|
||||
|
||||
### Help! I merged changes from upstream and cannot figure out how to resolve conflits when rebasing!
|
||||
|
||||
Never fear, if you occasionally merged upgstream/master, here is another way to squash your changes into a single commit
|
||||
|
||||
Rename your existing branch first
|
||||
|
||||
```
|
||||
git branch -m feature-xxx-unclean
|
||||
```
|
||||
|
||||
Checkout a new branch with the original name `feature-xxx` from upstream. This branch will supercede our old one.
|
||||
|
||||
```
|
||||
git checkout -b feature-xxx upstream/master
|
||||
```
|
||||
|
||||
Then merge your changes in your original feature branch `feature-xxx-unclean` and create a single commit.
|
||||
|
||||
```
|
||||
git merge --squash feature-xxx-unclean
|
||||
git commit
|
||||
```
|
||||
|
||||
You can now submit this new branch and create or replace your existing pull request
|
||||
|
||||
```
|
||||
git push origin [--force] feature-xxx:feature-xxx
|
||||
```
|
Loading…
Reference in New Issue