* feat(config): changelog for the last n commits
Adds a additional configuration variable `limit_commits` to the
configuration struct.
`limit_commits` can be set to a positive integer number to limit the
commits contained in the generated changelog.
Also adjusts the default config file to contain `limit_commits` as a
commented out line.
Extends documentation in README.md to also cover the introduced
configuration value.
issue: https://github.com/orhun/git-cliff/issues/102
* test(fixture): add test fixture for limiting commits
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* feat: support splitting commits by lines
* refactor(config): update the description for split_commits
* style(fmt): apply formatting via rustfmt
* refactor(test): create helper method for split_commits test
* fix(changelog): change the default behaviour for split_commits when it is not provided
* test(fixture): add test fixture for splitting commits
* docs(readme): update table of contents
* docs(readme): add warning about split_commits flag
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* fix(commit): pass footer token and separator to template
Currently, when a conventional commit has footers, only the footers'
values (the part after the separator token, such as `:`) are passed to
the template. This means that when multiple footers, such as
`Signed-off-by:` and `Co-authored-by:` are present, it isn't currently
possible for the template to determine the name of the footer. This
makes actually using data from footers in templates impractical in most
cases.
This commit fixes this by changing the `Serialize` impl for `Commit` to
pass the commit's footers as a structured object rather than a string.
The structured `Footer` type includes the footer's token (which is what
`git_conventional` calls the name preceding the separator token), the
separator, and the value.
I didn't make the new `Footer` type and `Commit::footers` method public,
because it isn't strictly necessary to add them to the `git-cliff-core`
public API to fix this issue. However, we can make them public in a
follow-up PR if this is considered useful.
Fixes#96
BREAKING CHANGE:
This changes type of the `commit.footers` array exposed to templates.
Currently, when a template uses `commit.footers`, it can treat the
values as strings. After this change, the footer object will need to
have its fields unpacked in order to use them.
However, the impact of this breakage is probably not that severe, since
it's not really practical to use footers in templates with the current
system.
* docs(README): discuss footers in README
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
* docs(examples): Add footers to `detailed.toml`
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
* refac(commit): address review feedback
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
* docs(README): address README review feedback
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
* refactor(example): update detailed example about newline issues
* test(fixture): add test fixture for commit footers
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* style: add newlines after the title to comply with MD022
Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>
* style: replace whitespaces with whitespace
Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>
* Same as basic example but sorts commit by sorted scope
* Defaults to "No Category" if no scope found on commit
* Adds a nested bullet for breaking change description