Contributing changes
Bug reports, bug fixes, and documentation improvements are always welcome. Please open an issue or create a pull request with your report, fix, or improvement.
If you want to make a more significant change, please first open an issue to discuss the change that you want to make. Dave Cheney gives a good rationale as to why this is important.
All changes are made via pull requests. In your pull request, please make sure that:
-
All existing tests pass. You can ensure this by running
make test. -
There are appropriate additional tests that demonstrate that your PR works as intended.
-
The documentation is updated, if necessary. For new features you should add an entry in
assets/chezmoi.io/docs/user-guide/and a complete description inassets/chezmoi.io/docs/reference/. See the website for instructions on how to build and view a local version of the documentation. By default, chezmoi will panic if a flag is undocumented or a long help is missing for a command. You can disable this panic during development by setting the environment variableCHEZMOIDEVtoignoreflags=1,ignorehelp=1. Once you have documented the command and its flags, runmake generateto generate the embedded documentation. -
All generated files are up to date. You can ensure this by running
make generateand including any modified files in your commit. -
The code is correctly formatted. You can ensure this by running
make format. -
The code passes
golangci-lint. You can ensure this by runningmake lint. -
The commit messages adhere to the conventional commits specification, with the following additional requirements:
-
The first character of the commit message is uppercase, e.g:
chore: Fix typo in testThe purpose of this is to maintain consistency in chezmoi's release notes, which are generated directly from the commit messages.
-
The commits do not have scopes (e.g.
chore(scope): Messageis invalid).
The following criteria can be used to determine the commit type:
fix: bug fixes in chezmoi codefeat: extending an existing feature or adding a new featuredocs: adding to or updating the documentationchore: small changes, such as fixing a typo, correcting grammar (including in documentation), or anything not covered by the above
Examples can be found in the commit history.
-
-
Commits are logically separate, with no merge or "fixup" commits.
-
The branch applies cleanly to
master.