diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dc3d18a..f0c8625 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,46 @@ -Thanks for contributing to `nvm`! +# Contributing + +:+1::tada: First off, thanks for taking the time to contribute to `nvm`! :tada::+1: We love pull requests and issues, they're our favorite. +The following is a set of guidelines for contributing to `nvm` managed by [@LJHarb](https://github.com/ljharb), which is hosted on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request. + However, before submitting, please review the following: -For bug reports: +# How Can I Contribute? - - Please make sure the bug is reproducible, and give us the steps to reproduce it, so that we can dig into the problem. - - Please give us as much detail as possible about your environment, so we can more easily confirm the problem. +There are lots of ways to get involved. Here are some suggestions of things we'd love some help with. -For pull requests: +## Resolving existing issues + +You can consider helping out with issues already requiring attention - look for a "help wanted" label. + +### How Do I Submit a (Good) Bug Report? :bug: + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. + +* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining which command exactly you used in the terminal. When listing steps, **don't just say what you did, but explain how you did it**. For example, if you moved the cursor to the end of a line, explain if you used the mouse, or a keyboard shortcut or a command, and if so which one? +* **Provide specific examples to demonstrate the steps**. Include links to files or Github projects, or copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Provide as much context as possible** in order to help others verify and ultimately fix the issue. This includes giving us as much details as possible about your environment, so we can more easily confirm the problem. + +## Documentation + +We are happy to welcome contributions from anyone willing to improve documentation by adding missing information or making it more consistent and coherent. + +# Dev Environment + +Please refer to the [README](README.md) for complete instructions how to install, update, as well as troubleshoot `nvm` in your environment depending on your Operating System. + +# Style Guide / Coding conventions + +### Pull requests + +#### Before creating a pull request - Please include tests. Changes with tests will be merged very quickly. - Please manually confirm that your changes work in `bash`, `sh`/`dash`, `ksh`, and `zsh`. Fast tests do run in these shells, but it's nice to manually verify also. @@ -18,4 +49,69 @@ For pull requests: Even if you don't have all of these items covered, please still feel free to submit a PR/issue! Someone else may be inspired and volunteer to complete it for you. -Thanks again! +#### How to create a pull request + +Create a new branch + +``` +git checkout -b issue1234 +``` + +Commit the changes to your branch, including a coherent commit message that follows our [standards](#commit-messages) + +``` +git commit -a +``` + +Before sending the pull request, make sure your code is running on the latest available code by rebasing onto the upstream source + +``` +git fetch upstream +git rebase upstream/main +``` + +Verify your changes + +``` +npm test +# or +npm run tests-only +``` + +Push your changes + +``` +git push origin issue1234 +``` + +Send the [pull request](https://docs.github.com/en/pull-requests), make requested changes, and get merged. + +### Commit Messages + +* Limit the first line of the commit message (message summary) to 72 characters or less. +* Use the present tense ("Add feature" not "Added feature") and imperative mood ("Move cursor to..." not "Moves cursor to...") when providing a description of what you did. +* If your PR addresses an issue, reference it in the body of the commit message. +* See the rest of the conventions [here](https://gist.github.com/ljharb/772b0334387a4bee89af24183114b3c7) + +#### Commit message example + +``` +[Tag]: Short description of what you did + +Longer description here if necessary + +Fixes #1234 +``` + +> **Note:** Add co-authors to your commit message for commits with multiple authors + +``` +Co-authored-by: Name Here +``` + + +# Code of Conduct +[Code of Conduct](https://github.com/nvm-sh/nvm/blob/master/CODE_OF_CONDUCT.md) + +# Where can I ask for help? +If you have any questions, please contact [@LJHarb](mailto:ljharb@gmail.com).