-
-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add another array of commits #36
Comments
I have thought about this, but the problem is that there isn't really a solution that avoids becoming too opinionated about what your commits should look like. The point of the library is to make it extremely easy to generate a changelog for all different types of repos, with very few absolute requirements. If we were to support both One possible solution would be to support custom patterns in the options objects: {
"name": "my-awesome-package",
"auto-changelog": {
"commitPatterns": {
"added": "feat\\(.+\\)",
"changed": "chore\\(.+\\)"
}
}
} And then these are accessible in custom templates and can be used like: # Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
{{#each releases}}
{{#if href}}
## [{{title}}]({{href}}){{#if tag}} - {{isoDate}}{{/if}}
{{else}}
## {{title}}{{#if tag}} - {{isoDate}}{{/if}}
{{/if}}
{{#if merges}}
### Merged
{{#each merges}}
- {{message}} {{#if href}}[`#{{id}}`]({{href}}){{/if}}
{{/each}}
{{/if}}
{{#if fixes}}
### Fixed
{{#each fixes}}
- {{commit.subject}}{{#each fixes}} {{#if href}}[`#{{id}}`]({{href}}){{/if}}{{/each}}
{{/each}}
{{/if}}
{{#if added}}
### Added
{{#each added}}
- {{subject}} {{#if href}}[`{{shorthash}}`]({{href}}){{/if}}
{{/each}}
{{/if}}
{{#if changed}}
### Changed
{{#each changed}}
- {{subject}} {{#if href}}[`{{shorthash}}`]({{href}}){{/if}}
{{/each}}
{{/if}}
{{#if commits}}
### Other Commits
{{#each commits}}
- {{subject}} {{#if href}}[`{{shorthash}}`]({{href}}){{/if}}
{{/each}}
{{/if}}
{{/each}} This would be pretty non-invasive to the codebase, and let the user define the patterns they use and how to format them in the log. Thoughts? |
that would be amazing. definitely should be optional. but that flexibility would allow people to adopt their own custom commit patterns and changelog outputs if they chose to. |
Possibly easier would be a handlebars helper that can filter commits directly in custom templates: ### Added
{{#filter-commits commits pattern="feat\(.+\)"}}
- {{subject}} [`{{shorthash}}`]({{href}})
{{/filtered-commits}}
### Changed
{{#filter-commits commits pattern="chore\(.+\)"}}
- {{subject}} [`{{shorthash}}`]({{href}})
{{/filtered-commits}} Although I'm not sure how we would render "all commits that don't appear in other lists". |
yes we actually did try that using a helper, but then we see empty ###Added lines if there were no features in that release. so thought it may be better to do it before we hit the template. |
So we have to use the original idea, or something like: {{#has-commits commits pattern="feat\(.+\)"}}
### Added
{{#filter-commits commits pattern="feat\(.+\)"}}
- {{subject}} [`{{shorthash}}`]({{href}})
{{/filtered-commits}}
{{/has-commits}}
{{#has-commits commits pattern="chore\(.+\)"}}
### Changed
{{#filter-commits commits pattern="chore\(.+\)"}}
- {{subject}} [`{{shorthash}}`]({{href}})
{{/filtered-commits}}
{{/has-commits}} Which feels a bit too bloated. |
yeah i guess would just mean adding some helpers to your template.js file? though agree lots of logic added to the actual template. |
What about a single {{#commit-list commits heading="### Added" pattern="feat\(.+\)"}}
- {{subject}} [`{{shorthash}}`]({{href}})
{{/commit-list}}
{{#commit-list commits heading="### Changed" pattern="chore\(.+\)"}}
- {{subject}} [`{{shorthash}}`]({{href}})
{{/commit-list}} |
much cleaner for sure. and likely does everything we were hoping to accomplish.
|
will this be released to npm? |
Feels cleaner to use http://shields.io for everything Remove todo list from readme Should ideally be issues on github Add option for specifying output file Fixes cookpete#1 and cleans stuff up a bit Add newline at end of generated logs Add support for --package Uses the version from package.json as the latest version, which lets you do cool stuff like generating a changelog as part of a version bump commit, see README.md for more Generate changelog on version 0.1.0 Fix --package bug Prefixing inside generateLog caused the param to always be truthy, which messed up parseReleases Explicitly render links for PRs and issues GitHub doesn't automatically parse them in markdown files like it does for PRs, issues and comments 0.1.1 Add FAQ to readme Rearrange usage docs Add support for specifying templates Also add a simple compact template Start using compact changelog It just seems.. nicer Lint and test before versioning 0.2.0 Replace toLocaleString usage with months array Not supported in node 0.10 0.2.1 Update templating logic Cleans up how logs are rendered Keeps things DRY between the two templates More sensible formatDate There was no point making it an external function in Compact when it's already a class method in Default Add a commit-only release to test data Beefs up the rendering tests a bit, covering more bases 0.2.2 Add support for minimumChangeCount in templates Backfill release notes with commits up to the given threshold Prevents releases that list only a single merge or fix, even if larger changes may have been commited as well Add semicolons after class properties To support babel 6.4.x Remove unique issue filter Broken since storing several issues per commit, so now causes more problems than it solves Case insensitive issue URL parsing 0.3.0 Bump packages Lint fixes Correct find polyfill usage More robust log separators Improve cmd util Improve origin URL parsing Fixes cookpete#2 and fixes cookpete#5 Improve error handling Add extra commits test Use template literal for success string Bump packages Remove semicolons No longer required with latest version of standard 0.3.1 Prevent duplicate commits being listed Fixes cookpete#3 0.3.2 Lint fix Bump packages And add yarn lockfile Fixes cookpete#7 Use babel-preset-env 0.3.3 Update travis to use later versions of node Add code coverage Remove parseInt radix No longer required by standard Fix travis node versions Tweak default template date format Disable codecov comments and build status Add yarn cache to travis config Generate coverage reports when testing locally Remove need for array.find polyfill Use async/await instead of promises Tweak version script 0.3.4 Add babel-polyfill Fixes cookpete#8 Requires babel-polyfill to be imported before the main file due to aggressing async function hoisting babel/babel#6206 0.3.5 Use origin hostname instead of host `host` includes the port number, which can break links Hopefully fixes cookpete#9 Correct bitbucket compare URLs 0.3.6 Improved issue matching Now supports any generic issue URL that contains `/issues/{number}` Update dependencies to enable Greenkeeper 🌴 (cookpete#10) * chore(package): update dependencies * docs(readme): add Greenkeeper badge Tweak readme badges Remove dependency status badges With greenkeeper enabled, they will pretty much always been up to date, right? Refactor codebase Add greenkeeper-lockfile support 1.0.0 Update readme Filter out commits with the same message as an existing merge 1.0.1 Tweak package read logic Fall back to https origin protocol 1.0.2 Tweak version script Fix pull request URL Bump packages Limit origin protocol to http or https Fix version script babel-node was erroring when using -p 1.0.3 Tidy options logic Keep coverage files inside test directory Tweak origin properties Add origin tests Add script to generate test data Update clean script Refactor run logic Add run tests Move test origins to separate file Exclude index.js from test coverage Remove unused options param from cmd util Tweak removeIndentation util Add util tests Fix multiple issue URL parsing Support modifying commit limit with --commit-limit (cookpete#12) * Support modifying commit limit with --commit-limit * Tidy up commit limit logic 1.1.0 Update readme Parse squash merge commits with no commit message Update formatting of shameless plug in templates Add npm script for generating test data Parse squash commits with broken messages Slightly larger heading for major releases Add major release to test data Add issue-url option to override issue URLs Fixes cookpete#13 Add basic requirements to readme 1.2.0 Use commander instance Increase test coverage Add commit with matching PR message to test data To ensure the commit is filtered out of changelogs Add commit to test data to trigger sorting Add tests Remove support for broken message squash merge Filter out merge commits Closes cookpete#14 Parse commits that close pull requests 1.2.1 Fix error when using --unreleased flag Fixes cookpete#16 1.2.2 Update fs-extra to the latest version 🚀 (cookpete#19) * fix(package): update fs-extra to version 5.0.0 * chore(package): update lockfile https://npm.im/greenkeeper-lockfile Add --latest-version option Closes cookpete#17 Update tests Add --issue-pattern option Closes cookpete#18 Override package options with command line options Add --starting-commit option Closes cookpete#21 1.3.0 Add merge commit to test data Add package version test Add --tag-prefix option Closes cookpete#22 Add --ignore-commit-pattern option Update niceDate tests to avoid timezone issues Fixes cookpete#24 Closes cookpete#25 The formatting is the main thing we want to test, not the exact date being correct (we can assume the JS engine will not fail us). Add support for generating logs without a git remote Fixes cookpete#23 Change use of "origin" to "remote" "origin" doesn't really make sense, as it is just the name of the default remote for most repos "remote" is more correct in the context of the code Fix tag prefix logic Update mocha to the latest version 🚀 (cookpete#26) * chore(package): update mocha to version 5.0.0 * chore(package): update lockfile https://npm.im/greenkeeper-lockfile 1.4.0 Support commits with no message Fixes cookpete#27 1.4.1 Update standard to the latest version 🚀 (cookpete#29) * chore(package): update standard to version 11.0.0 * chore(package): update lockfile https://npm.im/greenkeeper-lockfile * Lint fix Support for gitlab subgroups and self-hosted instances (cookpete#28) 1.4.2 Add tag prefix to compare URLs Fixes cookpete#30 1.4.3 Do not show date for unreleased section Fixes cookpete#31 Fix unreleased compare URL 1.4.4 Correctly prefix package version Fixes cookpete#33 1.4.5 Added support for old git versions (cookpete#35) 1.4.6 Use UTC dates by default Fixes cookpete#37 Add commit-list template helper Fixes cookpete#36 and fixes cookpete#39 Remove unused imports from template tests Feat: match template helper (cookpete#40) Move helper tests to separate files 1.5.0 Add --include-branch option Fixes cookpete#38 Fix duplicate test data commit hashes Add --breaking-pattern option Fixes cookpete#41 1.6.0 Add replaceText package option 1.7.0 Fix releases sorting when unreleased enabled (cookpete#45) Update git log format to support earlier git versions Fixes cookpete#43 Use async fs utils instead of fs-extra Closes cookpete#42 Also, tidies up imports 1.7.1 Remove node 4 and 5 from travis builds Enable partial line coverage with codecov Also move coverage into root Use %B for supported git versions The fallback was causing problems for commit messages with single newlines Add engines to package.json Add markdown linting Fixes cookpete#47 Fix changelog spacing
To better follow http://keepachangelog.com would it be possible to add another filtered group of commits to merges, commits, fixes? maybe changes? and therefore would need a changes regex pattern --changes-pattern. Useful if you follow a defined commit pattern that is easy to parse out, like the AngularJS one thats referenced everywhere.
Therefore our templates can properly output:
Added
Changed
Fixed
Right now we have to combine Added and Changed together, since all commits not matching the issues-pattern are lumped together in commits.
The text was updated successfully, but these errors were encountered: