* feat(changelog): make changelog.header a template (#697)
* refactor: clean up implementation
* docs: update the description of header field
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
See <https://git-cliff.org/docs/integration/github>
Squashed history:
* feat(github): support integration with GitHub repos
* fix(changelog): fix generation logic
* refactor(github): use verbose logging for errors
* fix(test): update tests accordingly to the render parameters
* feat(github): support deriving upstream URL from the repo
* docs(lib): update the description of the error module
* chore(github): add disclaimer for the github feature
* chore(config): filter the contributors in the github example
* fix(github): make GitHub login field optional
* chore(github): increase the logging verbosity for remote info
* refactor(git): reduce the log level for upstream remote
* feat(github): log the request error
* feat(args): add `--github-repo` argument
* feat(github): add caching for network requests
* feat(github): add progress bar for the network requests
* refactor(github): gate the implementation behind github feature flag
* fix(github): use the local cache for HTTP requests
* feat(github): set TCP keepalive value for HTTP client
* chore(cargo): create update-informer feature
* docs(website): add documentation about available features
* docs(website): reorder installation sections
* fix(config): skip serializing secret
* docs(website): add documentation about GitHub integration
* chore(example): update the style of GitHub config
* docs(website): add github example
* test(fixture): add test fixture for GitHub integration
* test(fixture): run the GitHub integration test
* fix(changelog): print header before fetching GitHub
* feat(github): allow using remote values without fetching GitHub
* chore(example): simplify Keep a Changelog example
* feat(example): add github-keepachangelog example
* chore(example): update the examples in default config
* chore(ci): test all features
* test(github): add unit tests for GitHub integration
* chore(ci): set upstream remote for tests
* chore(ci): show the current git status for test step
* chore(ci): skip git upstream test
* chore(ci): run tests without default features
* chore(ci): skip test with full name
* docs(website): add note about github-keepachangelog format
* chore(ci): skip the faulty git test for all test steps
* refactor(error): update the error type for logger
* 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