Skip to content

Commit dd8674b

Browse files
committed
docs(faq): categorize faq into "how to", "feature request graveyard", and "history"
1 parent c2ae121 commit dd8674b

File tree

4 files changed

+97
-82
lines changed

4 files changed

+97
-82
lines changed

docs/faq.md

Lines changed: 3 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
This page contains frequently asked questions about Commitizen.
1+
This page contains frequently asked how to questions.
22

33
## Support for [`PEP621`](https://peps.python.org/pep-0621/)
44

@@ -23,15 +23,6 @@ version = "2.5.1"
2323
version_provider = "pep621"
2424
```
2525

26-
## Why are `revert` and `chore` valid types in the check pattern of `cz_conventional_commits` but not types we can select?
27-
28-
`revert` and `chore` are added to the `pattern` in `cz check` in order to prevent backward errors, but officially they are not part of conventional commits, we are using the latest [types from Angular](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#type) (they used to but were removed).
29-
However, you can create a customized `cz` with those extra types. (See [Customization](customization/config_file.md)).
30-
31-
See more discussion in
32-
- [issue #142](https://github.com/commitizen-tools/commitizen/issues/142)
33-
- [issue #36](https://github.com/commitizen-tools/commitizen/issues/36)
34-
3526
## How to revert a bump?
3627

3728
If for any reason, the created tag and changelog were to be undone, this is the snippet:
@@ -50,87 +41,24 @@ In case the commit was pushed to the server, you can remove it by running:
5041
git push --delete origin <created_tag>
5142
```
5243

53-
## Is this project affiliated with the [Commitizen JS][cz-js] project?
54-
55-
**It is not affiliated.**
56-
57-
Both are used for similar purposes, parsing commits, generating changelog and version we presume.
58-
This one is written in python to make integration easier for python projects and the other serves the JS packages.
59-
60-
<!-- TODO: Add more details about the differences between Commitizen and Commitizen JS -->
61-
62-
They differ a bit in design, not sure if cz-js does any of this, but these are some things you can do with our Commitizen:
63-
64-
- create custom rules, version bumps and changelog generation. By default, we use the popular conventional commits (I think cz-js allows this).
65-
- single package, install one thing and it will work. cz-js is a monorepo, but you have to install different dependencies as far as I know.
66-
- pre-commit integration
67-
- works on any language project, as long as you create the `.cz.toml` or `cz.toml` file.
68-
69-
Where do they cross paths?
70-
71-
If you are using conventional commits in your git history, then you could swap one with the other in theory.
72-
73-
Regarding the name, [cz-js][cz-js] came first, they used the word Commitizen first. When this project was created originally, the creator read "be a good commitizen", and thought it was just a cool word that made sense, and this would be a package that helps you be a good "commit citizen".
74-
7544
## How to handle revert commits?
7645

7746
```sh
7847
git revert --no-commit <SHA>
7948
git commit -m "revert: foo bar"
8049
```
8150

82-
## Why don't we use [Pydantic](https://docs.pydantic.dev/)?
83-
84-
While Pydantic is a powerful and popular library for data validation, we intentionally avoid using it in this project to keep our dependency tree minimal and maintainable.
85-
86-
Including Pydantic would increase the chances of version conflicts for users - especially with major changes introduced in Pydantic v3. Because we pin dependencies tightly, adding Pydantic could unintentionally restrict what other tools or libraries users can install alongside `commitizen`.
87-
88-
Moreover we don't rely on the full feature set of Pydantic. Simpler alternatives like Python's built-in `TypedDict` offer sufficient type safety for our use cases, without the runtime overhead or dependency burden.
89-
90-
In short, avoiding Pydantic helps us:
91-
- Keep dependencies lightweight
92-
- Reduce compatibility issues for users
93-
- Maintain clarity about what contributors should and shouldn't use
94-
95-
9651
## I got `Exception [WinError 995] The I/O operation ...` error
9752

9853
This error was caused by a Python bug on Windows. It's been fixed by [cpython #22017](https://github.com/python/cpython/pull/22017), and according to Python's changelog, [3.8.6rc1](https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-6-release-candidate-1) and [3.9.0rc2](https://docs.python.org/3.9/whatsnew/changelog.html#python-3-9-0-release-candidate-2) should be the accurate versions first contain this fix. In conclusion, upgrade your Python version might solve this issue.
9954

10055
More discussion can be found in issue [#318](https://github.com/commitizen-tools/commitizen/issues/318).
10156

102-
## Why does Commitizen not support CalVer?
103-
104-
`commitizen` could support CalVer alongside SemVer, but in practice implementing CalVer
105-
creates numerous edge cases that are difficult to maintain ([#385]) and more generally,
106-
mixing the two version schemes may not be a good idea. If CalVer or other custom
107-
versioning scheme is needed, `commitizen` could still be used to standardize commits
108-
and create changelogs, but a separate package should be used for version increments.
109-
110-
Mixing CalVer and SemVer is generally not recommended because each versioning scheme
111-
serves a different purpose. Diverging from either specification can be confusing to
112-
users and cause errors with third-party tools that don't expect the non-standard format.
113-
114-
In the future, `commitizen` may support some implementation of CalVer, but at the time
115-
of writing, there are no plans to implement the feature ([#173]).
116-
117-
If you would like to learn more about both schemes, there are plenty of good resources:
118-
119-
- [Announcing CalVer](https://sedimental.org/calver.html)
120-
- [API Versioning from Stripe](https://stripe.com/blog/api-versioning)
121-
- [Discussion about pip's use of CalVer](https://github.com/pypa/pip/issues/5645#issuecomment-407192448)
122-
- [Git Version Numbering](https://code.erpenbeck.io/git/2021/12/16/git-version-numbering/)
123-
- [SemVer vs. CalVer and Why I Use Both](https://mikestaszel.com/2021/04/03/semver-vs-calver-and-why-i-use-both/) (but not at the same time)
124-
- [Semver Will Not Save You](https://hynek.me/articles/semver-will-not-save-you/)
125-
- [Why I Don't Like SemVer](https://snarky.ca/why-i-dont-like-semver/)
126-
127-
[#173]: https://github.com/commitizen-tools/commitizen/issues/173
128-
[#385]: https://github.com/commitizen-tools/commitizen/pull/385
129-
13057
## How to change the tag format ?
13158

13259
You can use the [`legacy_tag_formats`](config/bump.md#legacy_tag_formats) to list old tag formats.
13360
New bumped tags will be in the new format but old ones will still work for:
61+
13462
- changelog generation (full, incremental and version range)
13563
- bump new version computation (automatically guessed or increment given)
13664

@@ -146,7 +74,7 @@ legacy_tag_formats = [
14674
]
14775
```
14876

149-
## How to avoid warnings for expected non-version tags
77+
## How to avoid warnings for expected non-version tags?
15078

15179
You can explicitly ignore them with [`ignored_tag_formats`](config/bump.md#ignored_tag_formats).
15280

@@ -159,5 +87,3 @@ ignored_tag_formats = [
15987
"v${major}.${minor}",
16088
]
16189
```
162-
163-
[cz-js]: https://github.com/commitizen/cz-cli

docs/features_wont_add.md

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,71 @@
1-
This page contains features that have been proposed or considered but won't be implemented in Commitizen.
1+
# Feature request graveyard
2+
3+
This page contains features and designs that have been proposed or considered but won't be implemented in Commitizen.
24

35
For a comprehensive list, please refer to our [issue tracker](https://github.com/commitizen-tools/commitizen/issues?q=is:issue%20state:closed%20label:%22issue-status:%20wont-fix%22%20OR%20label:%22issue-status:%20wont-implement%22).
46

5-
- Enable multiple locations of config file `.cz.*` [#955](https://github.com/commitizen-tools/commitizen/issues/955)
6-
- Create a flag to build the changelog from commits in multiple git repositories [#790](https://github.com/commitizen-tools/commitizen/issues/790)
7-
- Global Configuration [#597](https://github.com/commitizen-tools/commitizen/issues/597)
7+
## Enable multiple locations of config file `.cz.*` [#955](https://github.com/commitizen-tools/commitizen/issues/955)
8+
9+
<!-- TODO: Add more details about why we won't add this feature -->
10+
11+
## Create a flag to build the changelog from commits in multiple git repositories [#790](https://github.com/commitizen-tools/commitizen/issues/790)
12+
13+
<!-- TODO: Add more details about why we won't add this feature -->
14+
15+
## Global Configuration [#597](https://github.com/commitizen-tools/commitizen/issues/597)
16+
17+
<!-- TODO: Add more details about why we won't add this feature -->
18+
19+
## Why are `revert` and `chore` valid types in the check pattern of `cz_conventional_commits` but not types we can select?
20+
21+
`revert` and `chore` are added to the `pattern` in `cz check` in order to prevent backward errors, but officially they are not part of conventional commits, we are using the latest [types from Angular](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#type) (they used to but were removed).
22+
However, you can create a customized `cz` with those extra types. (See [Customization](customization/config_file.md)).
23+
24+
See more discussion in
25+
26+
- [issue #142](https://github.com/commitizen-tools/commitizen/issues/142)
27+
- [issue #36](https://github.com/commitizen-tools/commitizen/issues/36)
28+
29+
30+
## Why not support CalVer?
31+
32+
`commitizen` could support CalVer alongside SemVer, but in practice implementing CalVer
33+
creates numerous edge cases that are difficult to maintain ([#385]) and more generally,
34+
mixing the two version schemes may not be a good idea. If CalVer or other custom
35+
versioning scheme is needed, `commitizen` could still be used to standardize commits
36+
and create changelogs, but a separate package should be used for version increments.
37+
38+
Mixing CalVer and SemVer is generally not recommended because each versioning scheme
39+
serves a different purpose. Diverging from either specification can be confusing to
40+
users and cause errors with third-party tools that don't expect the non-standard format.
41+
42+
In the future, `commitizen` may support some implementation of CalVer, but at the time
43+
of writing, there are no plans to implement the feature ([#173]).
44+
45+
If you would like to learn more about both schemes, there are plenty of good resources:
46+
47+
- [Announcing CalVer](https://sedimental.org/calver.html)
48+
- [API Versioning from Stripe](https://stripe.com/blog/api-versioning)
49+
- [Discussion about pip's use of CalVer](https://github.com/pypa/pip/issues/5645#issuecomment-407192448)
50+
- [Git Version Numbering](https://code.erpenbeck.io/git/2021/12/16/git-version-numbering/)
51+
- [SemVer vs. CalVer and Why I Use Both](https://mikestaszel.com/2021/04/03/semver-vs-calver-and-why-i-use-both/) (but not at the same time)
52+
- [Semver Will Not Save You](https://hynek.me/articles/semver-will-not-save-you/)
53+
- [Why I Don't Like SemVer](https://snarky.ca/why-i-dont-like-semver/)
54+
55+
[#173]: https://github.com/commitizen-tools/commitizen/issues/173
56+
[#385]: https://github.com/commitizen-tools/commitizen/pull/385
57+
58+
59+
## Why don't we use [Pydantic](https://docs.pydantic.dev/)?
60+
61+
While Pydantic is a powerful and popular library for data validation, we intentionally avoid using it in this project to keep our dependency tree minimal and maintainable.
62+
63+
Including Pydantic would increase the chances of version conflicts for users - especially with major changes introduced in Pydantic v3. Because we pin dependencies tightly, adding Pydantic could unintentionally restrict what other tools or libraries users can install alongside `commitizen`.
64+
65+
Moreover we don't rely on the full feature set of Pydantic. Simpler alternatives like Python's built-in `TypedDict` offer sufficient type safety for our use cases, without the runtime overhead or dependency burden.
66+
67+
In short, avoiding Pydantic helps us:
68+
69+
- Keep dependencies lightweight
70+
- Reduce compatibility issues for users
71+
- Maintain clarity about what contributors should and shouldn't use

docs/history.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
## Is this project affiliated with the [Commitizen JS][cz-js] project?
3+
4+
**It is not affiliated.**
5+
6+
Both are used for similar purposes, parsing commits, generating changelog and version we presume.
7+
This one is written in python to make integration easier for python projects and the other serves the JS packages.
8+
9+
<!-- TODO: Add more details about the differences between Commitizen and Commitizen JS -->
10+
11+
They differ a bit in design, not sure if cz-js does any of this, but these are some things you can do with our Commitizen:
12+
13+
- create custom rules, version bumps and changelog generation. By default, we use the popular conventional commits (I think cz-js allows this).
14+
- single package, install one thing and it will work. cz-js is a monorepo, but you have to install different dependencies as far as I know.
15+
- pre-commit integration
16+
- works on any language project, as long as you create the `.cz.toml` or `cz.toml` file.
17+
18+
Where do they cross paths?
19+
20+
If you are using conventional commits in your git history, then you could swap one with the other in theory.
21+
22+
Regarding the name, [cz-js][cz-js] came first, they used the word Commitizen first. When this project was created originally, the creator read "be a good commitizen", and thought it was just a cool word that made sense, and this would be a package that helps you be a good "commit citizen".
23+
24+
[cz-js]: https://github.com/commitizen/cz-cli

mkdocs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ nav:
6565
- Developmental releases: "tutorials/dev_releases.md"
6666
- Monorepo support: "tutorials/monorepo_guidance.md"
6767
- FAQ: "faq.md"
68-
- Features we won't add: "features_wont_add.md"
68+
- "features_wont_add.md"
6969
- Exit Codes: "exit_codes.md"
7070
- Third-Party Commitizen Plugins:
7171
- About: "third-party-plugins/about.md"
@@ -81,6 +81,7 @@ nav:
8181
- "third-party-plugins/github-jira-conventional.md"
8282
- Contributing: "contributing.md"
8383
- Contributing TL;DR: "contributing_tldr.md"
84+
- "history.md"
8485
- Resources: "external_links.md"
8586

8687
markdown_extensions:

0 commit comments

Comments
 (0)