CHANGELOG generator implemented in Go (Golang).

git-chglog

git-chglog

godoc.org Actions Status AppVeyor Coverage Status MIT License

CHANGELOG generator implemented in Go (Golang).
Anytime, anywhere, Write your CHANGELOG.

Table of Contents

Features

  • ♻️ High portability
    • It works with single binary. Therefore, any project (environment) can be used.
  • 🔰 Simple usability
    • The CLI usage is very simple and has low learning costs.
    • For example, the simplest command is $ git-chglog.
  • 🚀 High flexibility
    • Commit message format and ...
    • CHANGELOG's style (Template) and ...
    • etc ...

How it works

git-chglog internally uses the git command to get data to include in the CHANGELOG. The basic steps are as follows.

  1. Get all the tags.
  2. Get the commits contained between tagA and tagB.
  3. Execute with all tags corresponding to tag query that were specified in Step 1 and 2.

Getting Started

We will start with installation and introduce the steps up to the automatic generation of the configuration file and template.

Installation

Please install git-chglog in a way that matches your environment.

Homebrew (for macOS users)

brew tap git-chglog/git-chglog
brew install git-chglog

Scoop (for Windows users)

scoop install git-chglog

asdf

asdf plugin-add git-chglog https://github.com/GoodwayGroup/asdf-git-chglog.git
asdf install git-chglog latest

Go users

go get -u github.com/git-chglog/git-chglog/cmd/git-chglog

If you are using another platform, you can download a binary from the releases page and place it in a directory in your $PATH.

Test Installation

You can check with the following command whether the git-chglog command was included in a directory that is in your $PATH.

$ git-chglog --version
# outputs the git-chglog version

Quick Start

git-chglog requires configuration files and templates to generate a CHANGELOG.

However, it is a waste of time to create configuration files and templates from scratch.

Therefore we recommend using the --init option which will create them interactively 👍

git-chglog --init

init option demo


You are now ready for configuration files and templates!

Let's immediately generate a CHANGELOG of your project.
By doing the following simple command, Markdown for your CHANGELOG is displayed on stdout.

git-chglog

Use -o (--output) option if you want to output to a file instead of stdout.

git-chglog -o CHANGELOG.md

You now know basic usage of git-chglog!

In order to make a better CHANGELOG, please refer to the following document and customize it.

CLI Usage

$ git-chglog --help

USAGE:
  git-chglog [options] <tag query>

    There are the following specification methods for <tag query>.

    1. <old>..<new> - Commit contained in <old> tags from <new>.
    2. <name>..     - Commit from the <name> to the latest tag.
    3. ..<name>     - Commit from the oldest tag to <name>.
    4. <name>       - Commit contained in <name>.

OPTIONS:
  --init                      generate the git-chglog configuration file in interactive (default: false)
  --path value                Filter commits by path(s). Can use multiple times.
  --config value, -c value    specifies a different configuration file to pick up (default: ".chglog/config.yml")
  --template value, -t value  specifies a template file to pick up. If not specified, use the one in config
  --repository-url value      specifies git repo URL. If not specified, use 'repository_url' in config
  --output value, -o value    output path and filename for the changelogs. If not specified, output to stdout
  --next-tag value            treat unreleased commits as specified tags (EXPERIMENTAL)
  --silent                    disable stdout output (default: false)
  --no-color                  disable color output (default: false) [$NO_COLOR]
  --no-emoji                  disable emoji output (default: false) [$NO_EMOJI]
  --no-case                   disable case sensitive filters (default: false)
  --tag-filter-pattern value  Regular expression of tag filter. Is specified, only matched tags will be picked
  --jira-url value            Jira URL [$JIRA_URL]
  --jira-username value       Jira username [$JIRA_USERNAME]
  --jira-token value          Jira token [$JIRA_TOKEN]
  --help, -h                  show help (default: false)
  --version, -v               print the version (default: false)

EXAMPLE:

  $ git-chglog

    If <tag query> is not specified, it corresponds to all tags.
    This is the simplest example.

  $ git-chglog 1.0.0..2.0.0

    The above is a command to generate CHANGELOG including commit of 1.0.0 to 2.0.0.

  $ git-chglog 1.0.0

    The above is a command to generate CHANGELOG including commit of only 1.0.0.

  $ git-chglog $(git describe --tags $(git rev-list --tags --max-count=1))

    The above is a command to generate CHANGELOG with the commit included in the latest tag.

  $ git-chglog --output CHANGELOG.md

    The above is a command to output to CHANGELOG.md instead of standard output.

  $ git-chglog --config custom/dir/config.yml

    The above is a command that uses a configuration file placed other than ".chglog/config.yml".

  $ git-chglog --path path/to/my/component --output CHANGELOG.component.md

    Filter commits by specific paths or files in git and output to a component specific changelog.

tag query

You can specify which commits to include in the generation of CHANGELOG using <tag query>.

The table below shows Query patterns and summaries, and Query examples.

Query Description Example
<old>..<new> Commit contained in <new> tags from <old>. $ git-chglog 1.0.0..2.0.0
<name>.. Commit from the <name> to the latest tag. $ git-chglog 1.0.0..
..<name> Commit from the oldest tag to <name>. $ git-chglog ..2.0.0
<name> Commit contained in <name>. $ git-chglog 1.0.0

Configuration

The git-chglog configuration is a yaml file. The default location is .chglog/config.yml.

Below is a complete list that you can use with git-chglog.

bin: git
style: ""
template: CHANGELOG.tpl.md
info:
  title: CHANGELOG
  repository_url: https://github.com/git-chglog/git-chglog

options:
  tag_filter_pattern: '^v'
  sort: "date"

  commits:
    filters:
      Type:
        - feat
    sort_by: Scope

  commit_groups:
    group_by: Type
    sort_by: Title
    title_order:
      - feat
    title_maps:
      feat: Features

  header:
    pattern: "<regexp>"
    pattern_maps:
      - PropName

  issues:
    prefix:
      - #

  refs:
    actions:
      - Closes
      - Fixes

  merges:
    pattern: "^Merge branch '(\\w+)'$"
    pattern_maps:
      - Source

  reverts:
    pattern: "^Revert \"([\\s\\S]*)\"$"
    pattern_maps:
      - Header

  notes:
    keywords:
      - BREAKING CHANGE

bin

Git execution command.

Required Type Default Description
N String "git" -

style

CHANGELOG style. Automatic linking of issues and notices, initial value setting such as merges etc. are done automatically.

Required Type Default Description
N String "none" Should be "github" "gitlab" "bitbucket" "none"

template

Path for the template file. It is specified by a relative path from the setting file. Absolute paths are also ok.

Required Type Default Description
N String "CHANGELOG.tpl.md" -

info

Metadata for CHANGELOG. Depending on Style, it is sometimes used in processing, so it is recommended to specify it.

Key Required Type Default Description
title N String "CHANGELOG" Title of CHANGELOG.
repository_url N String none URL of git repository.

options

Options used to process commits.

options.sort

Options concerning the acquisition and sort of commits.

Required Type Default Description
N String "date" Defines how tags are sorted in the generated change log. Values: "date", "semver".

options.commits

Options concerning the acquisition and sort of commits.

Key Required Type Default Description
filters N Map in List none Filter by using Commit properties and values. Filtering is not done by specifying an empty value.
sort_by N String "Scope" Property name to use for sorting Commit. See Commit.

options.commit_groups

Options for groups of commits.

Key Required Type Default Description
group_by N String "Type" Property name of Commit to be grouped into CommitGroup. See CommitGroup.
sort_by N String "Title" Property name to use for sorting CommitGroup. See CommitGroup.
title_order N List none Predefined order of titles to use for sorting CommitGroup. Only if sort_by is Custom
title_maps N Map in List none Map for CommitGroup title conversion.

options.header

This option is used for parsing the commit header.

Key Required Type Default Description
pattern Y String none A regular expression to use for parsing the commit header.
pattern_maps Y List none A rule for mapping the result of HeaderPattern to the property of Commit. See Commit.

options.issues

This option is used to detect issues.

Key Required Type Default Description
prefix N List none Prefix used for issues. (e.g. #, #gh-)

options.refs

This option is for parsing references.

Key Required Type Default Description
actions N List none Word list of Ref.Action. See Ref.

options.merges

Options to detect and parse merge commits.

Key Required Type Default Description
pattern N String none Similar to options.header.pattern.
pattern_maps N List none Similar to options.header.pattern_maps.

options.reverts

Options to detect and parse revert commits.

Key Required Type Default Description
pattern N String none Similar to options.header.pattern.
pattern_maps N List none Similar to options.header.pattern_maps.

options.notes

Options to detect notes contained in commit bodies.

Key Required Type Default Description
keywords N List none Keyword list to find Note. A semicolon is a separator, like <keyword>: (e.g. BREAKING CHANGE).

Templates

The git-chglog template uses the text/template package. For basic usage please refer to the following.

text/template

If you are not satisfied with the prepared template please try customizing one.


The basic templates are as follows.

Example:

{{ if .Versions -}}
<a name="unreleased"></a>
## [Unreleased]

{{ if .Unreleased.CommitGroups -}}
{{ range .Unreleased.CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}

{{- if .RevertCommits -}}
### Reverts
{{ range .RevertCommits -}}
- {{ .Revert.Header }}
{{ end }}
{{ end -}}

{{- if .MergeCommits -}}
### Pull Requests
{{ range .MergeCommits -}}
- {{ .Header }}
{{ end }}
{{ end -}}

{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}

{{- if .Versions }}
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...HEAD
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}

See the godoc RenderData documentation for available variables.

Supported Styles

Name Status Features
GitHub Mentions automatic link. Automatic link to references.
GitLab Mentions automatic link. Automatic link to references.
Bitbucket Mentions automatic link. Automatic link to references.

📝 Even with styles that are not yet supported, it is possible to make ordinary CHANGELOG.

Jira Integration

Jira is a popular project management tool. When a project uses Jira to track feature development and bug fixes, it may also want to generate change log based information stored in Jira. With embedding a Jira story id in git commit header, the git-chglog tool may automatically fetch data of the story from Jira, those data then can be used to render the template.

Take the following steps to add Jira integration:

1. Change the header parse pattern to recognize Jira issue id in the configure file

Where Jira issue is identical Jira story.

The following is a sample pattern:

header:
  pattern: "^(?:(\\w*)|(?:\\[(.*)\\])?)\\:\\s(.*)$"
  pattern_maps:
    - Type
    - JiraIssueID
    - Subject

This sample pattern can match both forms of commit headers:

  • feat: new feature of something
  • [JIRA-ID]: something

2. Add Jira configuration to the configure file

The following is a sample:

jira:
  info:
    username: u
    token: p
    url: https://jira.com
  issue:
    type_maps:
      Task: fix
      Story: feat
    description_pattern: "<changelog>(.*)</changelog>"

Here you need to define Jira URL, access username and token (password). If you don't want to write your Jira access credential in configure file, you may define them with environment variables: JIRA_URL, JIRA_USERNAME and JIRA_TOKEN.

You also needs to define a issue type map. In above sample, Jira issue type Task will be mapped to fix and Story will be mapped to feat.

As a Jira story's description could be very long, you might not want to include the entire description into change log. In that case, you may define description_pattern like above, so that only content embraced with <changelog> ... </changelog> will be included.

3. Update the template to show Jira data

In the template, if a commit contains a Jira issue id, then you may show Jira data. For example:

{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ if .JiraIssue }} {{ .JiraIssue.Description }}
{{ end }}
{{ end }}
{{ end -}}

Within a Commit, the following Jira data can be used in template:

  • .JiraIssue.Summary - Summary of the Jira story
  • .JiraIssue.Description - Description of the Jira story
  • .JiraIssue.Type - Original type of the Jira story, and .Type will be mapped type.
  • .JiraIssue.Labels - A list of strings, each is a Jira label.

FAQ

Why do not you output files by default? This is not for the purpose of completely automating the generation of CHANGELOG files, it is only for assisting generation.

It is ideal to describe everything included in CHANGELOG in your commits. But actually it is very difficult to do it perfectly.

There are times when you need to edit the generated output to write a great CHANGELOG.

By displaying it on the standard output, it makes it easy to change the contents.

Can I commit CHANGELOG changes before creating tags?

Yes, it can be solved by using the --next-tag flag.

For example, let's say you want to upgrade your project to 2.0.0.
You can create CHANGELOG containing 2.0.0 as follows.

git-chglog --next-tag 2.0.0 -o CHANGELOG.md
git commit -am "release 2.0.0"
git tag 2.0.0

The point to notice is that before actually creating a tag with git, it is conveying the next version with --next-tag 👍

This is a step that is necessary for project operation in many cases.

Can I generate a CHANGELOG based on certain tags?

Yes, it can be solved by use the --tag-filter-pattern flag.

For example, the following command will only include tags starting with "v":

git-chglog --tag-filter-pattern '^v'

TODO

  • Windows Support
  • More styles (GitHub, GitLab, Bitbucket 🎉 )
  • Snippetization of configuration files (improvement of reusability)
  • More test test test ... (and example)

Thanks

git-chglog is inspired by conventional-changelog. Thank you!

Contributing

We alway welcome your contributions 👏

Development

  1. Use Golang version >= 1.16
  2. Fork (https://github.com/git-chglog/git-chglog) 🎉
  3. Create a feature branch
  4. Run test suite with the $ make test command and confirm that it passes
  5. Run linters with the $ make lint command and confirm it passes 🧹
  6. Commit your changes 📝
  7. Rebase your local changes against the master branch 💡
  8. Create new Pull Request 💌

Bugs, feature requests and comments are more than welcome in the issues.

Feedback

I would like to make git-chglog a better tool.
The goal is to be able to use in various projects.

Therefore, your feedback is very useful.
I am very happy to tell you your opinions on Issues and PR ❤️

CHANGELOG

See CHANGELOG.md

Related Projects

License

MIT © tsuyoshiwada

Comments
  • Is this project still maintained ?

    Is this project still maintained ?

    We just started using this project for terraform-aws-modules, but I'm a little afraid that this project is losing its maintainer.

    @wadackel did a great work so far, but may be it'll be nice to call for new maintainers to help on this project.

    Thanks again @wadackel for your awesome work.

  • feat: allow tag sorting by semver

    feat: allow tag sorting by semver

    Relates to #123.

    While this does not introduce "per-branch" tag parsing it does allow an alternative tag sorting method which maybe a better solution.

    With this commit the user can decide to sort the tags by semver instead of dates.

    This is useful where repositories are utilizing a stable branch model and back-ports are interleaved with new releases.

    For example, if your mainline is on v3.0.0 with it's last release 1/1/2021 and a back-port release of v2.0.1 is released on 1/2/2021, sorting by semver will correctly order the change log producing v2.0.0 -> v2.0.1 -> v3.0.0

    This functionality is completely opt-in and defaults to the original "date" sorting

    Signed-off-by: ldelossa [email protected]

    What does this do / why do we need it?

    Explained in commit message.

    How this PR fixes the problem?

    Explained in commit message

    What should your reviewer look out for in this PR?

    Ensure that there are no logical issues with sorting by semver in respect to the larger git-chlog application.

    Check lists

    • [x] Test passed
    • [x] Coding style (indentation, etc)

    Additional Comments (if any)

    {Please write here}

    Which issue(s) does this PR fix?

  • feat: add `--sort [TYPE]` flag

    feat: add `--sort [TYPE]` flag

    What does this do / why do we need it?

    First off, thank you for creating an awesome tool. We're using git-chglog in many open source repositories at New Relic and we would like to continue doing so.

    ~~The PR introduces sorting tags by version number instead of sorting by the date of tag creation. Users can still sort by date by passing the flag --sort-by-date. Using --sort-by-date will perform the original behavior of the git-chglog command.~~

    Per request to integrate with the latest configuration updates from #124 (nice addition @ldelossa 🙂 ), this pull request introduces sorting tags by semver version using the --sort [TYPE] flag where TYPE is either date or semver. Sort by date is still default behavior.

    Previous reasoning behind the idea: Since we support multiple major release branches of a repository, our CHANGELOG gets mangled when we release v1.x and then release an update for v2.x. Essentially the v1.x commits get combined with the v2.x commits in the CHANGELOG and requires manual editing that can be cumbersome with every new release we create. Sorting the tags by version number fixes this issue.

    Give it a test drive:

    make build
    

    This will build the binaries for supported architectures located in the ./bin directory- e.g. ./bin/{arch}/git-chglog (replace {arch} with darwin, etc)

    ./bin/darwin/git-chglog
    

    How this PR fixes the problem?

    Sorting the tags by version number ensures git-chglog selects the correct previous tag to compare to the new tag.

    Current hypothetical ordering for a CHANGELOG might look like this:

    v2.1.0 <-- will contain commit messages from v1.1.1 due to how git-chglog sorts from tag timestamp
    v1.1.1 <-- patch release for v1.x (this causes an issue for all v2.x release after this one)
    v2.0.0
    v1.1.0
    v1.0.0
    

    This is because the diff that's being checked is github.com/user/repo/compare/v1.1.1...v2.1.0, but we need this to be github.com/user/repo/compare/v2.0.0...v2.1.0 for the latest release in the example above.

    This PR introduces ordering for a CHANGELOG that looks like this:

    v2.1.0 
    v2.0.0
    v1.1.1 
    v1.1.0
    v1.0.0
    

    This ensures the correct previous tag is selected for comparison to create the CHANGELOG entries.

    What should your reviewer look out for in this PR?

    This PR migrates this project from dep to Go modules. The vendor directory is no longer needed.

    Check lists

    • [x] Test passed
    • [x] Coding style (indentation, etc)

    Which issue(s) does this PR fix?

    Resolves: #74 Resolves: #112

  • Generate() fails when an invalid query passed

    Generate() fails when an invalid query passed

    Generate() fails when an invalid query passed

    Expected Behavior

    gen.Generate(buf, "not_found") -> "not_found was not found"

    Actual Behavior

    gen.Generate(buf, "not_found") -> "exit status 128"

    Steps to Reproduce (including precondition)

    1-Initialize a generator 2-Create an empty buffer 3-Call Generate() with an invalid query

    Screenshot on This Problem (if possible)

    failing test

    Your Environment

    • OS: macOS Sierra
    • git-chglog version: master
  • Create Dependabot config file

    Create Dependabot config file

    :wave: Dependabot is moving natively into GitHub! This pull request migrates your configuration from Dependabot.com to a config file, using the new syntax. When you merge this pull request, we'll swap out dependabot-preview (me) for a new dependabot app, and you'll be all set!

    With this change, you'll now use the Dependabot page in GitHub, rather than the Dependabot dashboard, to monitor your version updates. Dependabot is now configured exclusively using config files.

    The new version does not yet support private git dependencies. If you use these we recommend recommend leaving Dependabot Preview active.

    If you've got any questions or feedback for us, please let us know by creating an issue in the dependabot/dependabot-core repository.

    Learn more about the relaunch of Dependabot

    Please note that regular @dependabot commands do not work on this pull request.

    :robot::yellow_heart:

  • feat: add Jira integration

    feat: add Jira integration

    What does this do / why do we need it?

    Jira is a popular project management system which can be used for tracking feature request and bug fix. Usually Jira has been filled with plenty of information which can be used to generate change log. To avoid effort of copy-paste things from Jira to git commit log, Jira integration should be very helpful.

    How this PR fixes the problem?

    This PR adds Jira integration. With including an Jira story id in git commit message, it can automatically fetch story type, summary and description from Jira, and user may include those info in change log.

    What should your reviewer look out for in this PR?

    Check lists

    • [ ] Test passed
    • [ ] Coding style (indentation, etc)

    Additional Comments (if any)

    {Please write here}

    Which issue(s) does this PR fix?

  • `git-chglog --version` reports version 0.9.1 then it should be v0.10.0

    `git-chglog --version` reports version 0.9.1 then it should be v0.10.0

    git-chglog --version reports version 0.9.1 then it should be v0.10.0

    Expected Behavior

    $ git-chglog --version
    git-chglog version v0.10.0
    

    Actual Behavior

    $ git-chglog --version
    git-chglog version 0.9.1
    

    Steps to Reproduce (including precondition)

    $ GO111MODULE=on go get github.com/git-chglog/git-chglog/cmd/git-chglog
    go: downloading github.com/git-chglog/git-chglog v0.10.0
    go: found github.com/git-chglog/git-chglog/cmd/git-chglog in github.com/git-chglog/git-chglog v0.10.0
    go: downloading gopkg.in/kyokomi/emoji.v1 v1.5.1
    go: downloading github.com/urfave/cli v1.22.5
    go: downloading gopkg.in/AlecAivazis/survey.v1 v1.8.8
    go: downloading gopkg.in/yaml.v2 v2.4.0
    go: downloading github.com/fatih/color v1.10.0
    go: downloading github.com/mattn/go-colorable v0.1.8
    go: downloading github.com/tsuyoshiwada/go-gitcmd v0.0.0-20180205145712-5f1f5f9475df
    go: downloading golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae
    go: downloading github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
    go: downloading github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b
    go: downloading github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d
    $ git-chglog --version
    git-chglog version 0.9.1
    

    Screenshot on This Problem (if possible)

    {Please write here}

    Your Environment

    • OS: go version go1.15.8 linux/amd64
    • git-chglog version: v0.10.0
  • feat: add docker image releaser

    feat: add docker image releaser

    What does this do / why do we need it?

    It release a docker image for every release. I needed it in my Gitlab-ci to easily generate my changelog.

    How this PR fixes the problem?

    It builds and push an image to Dockerhub.

    What should your reviewer look out for in this PR?

    The dockerfile and the github actions files

    Check lists

    • [ ] Test passed
    • [ ] Coding style (indentation, etc)

    Additional Comments (if any)

    You will need to create two secrets on the repo to authenticate to Dockerhub

    Which issue(s) does this PR fix?

    fixes #132

  • feat: Add --tag-filter-pattern flag.

    feat: Add --tag-filter-pattern flag.

    What does this do / why do we need it?

    Our project tags the git repo in many ways. Several CI pipeline will tag with different prefixes. But we only want to include certain tags in CHANGELOG.

    How this PR fixes the problem?

    This PR adds a flag --tag-filter-pattern. This flag specifies a regular expression and only matched tags will be included in change log.

    What should your reviewer look out for in this PR?

    Code change is tiny. No much special. The major change is in tag_reader.go.

    Check lists

    • [x] Test passed
    • [x] Coding style (indentation, etc)

    Additional Comments (if any)

    NA

    Which issue(s) does this PR fix?

    fixes #43

  • Consistancy in docker image tag

    Consistancy in docker image tag

    What does this do / why do we need it?

    Stay consistent with docker image tag for good practice and standardization.

    How this PR fixes the problem?

    What should your reviewer look out for in this PR?

    Check lists

    • [x] Test passed
    • [x] Coding style (indentation, etc)

    Additional Comments (if any)

    Stay consistent with docker image tag for good practice and standardization.

    Which issue(s) does this PR fix?

  • ci: deprecate AppVoyer integration

    ci: deprecate AppVoyer integration

    What does this do / why do we need it?

    With the migration to GitHub Action, there's no need to continue to use AppVoyer to only test on Windows, as it's covered by corresponding new jobs.

    Check lists

    • [x] Test passed
    • [x] Coding style (indentation, etc)

    Which issue(s) does this PR fix?

    Fixes #126

  • golang: out-of-bounds read in golang.org/x/text/language leads to DoS (CVE-2021-38561)

    golang: out-of-bounds read in golang.org/x/text/language leads to DoS (CVE-2021-38561)

    Expected Behavior

    No CVEs reported.

    Actual Behavior

    Reported by Trivy scan:

    Package: golang.org/x/text Installed Version: v0.3.3 Vulnerability CVE-2021-38561 Severity: HIGH Fixed Version: 0.3.7 Link: CVE-2021-38561

    Your Environment

    • OS: Linux Ubuntu 22.04
    • git-chglog version: 0.15.1
  • git-chglog is only showing merges (I would like all commits)

    git-chglog is only showing merges (I would like all commits)

    Hi! I am trying to generate a pretty change log for a project I don't personally develop for but am trying to support. Often, there are commits directly against the main branch that I'd like to include in the change-log. I don't have any filters on my commits. Am I missing anything?

    Expected Behavior

    git-chglog can include all commits, not just merges.

    Actual Behavior

    git-chglog seems to only include merges

    Steps to Reproduce (including precondition)

    Here's my setup

    aaron@aarons-mbp pinenote-debian-recipes % git-chglog --init
    ? What is the URL of your repository? https://github.com/m-weigand/pinenote-debian-recipes
    ? What is your favorite style? github
    ? Choose the format of your favorite commit message <subject>
    ? What is your favorite template style? keep-a-changelog
    ? Do you include Merge Commit in CHANGELOG? Yes
    ? Do you include Revert Commit in CHANGELOG? Yes
    ? In which directory do you output configuration files and templates? .chglog
    
    ✨  Configuration file and template generation completed!
      ✔ .chglog/config.yml
      ✔ .chglog/CHANGELOG.tpl.md
    

    Screenshot on This Problem (if possible)

    Here is me showing git-chglog and then git log:

    # git-chglog only shows the merges
    aaron@aarons-mbp pinenote-debian-recipes % git-chglog v20221031..v0.3-beta1
    <a name="unreleased"></a>
    ## [Unreleased]
    
    
    <a name="v0.3-beta1"></a>
    ## [v0.3-beta1] - 2022-12-12
    ### Pull Requests
    - Merge pull request [#5](https://github.com/m-weigand/pinenote-debian-recipes/issues/5) from SomeoneToIgnore/pin-custom-debs
    
    
    <a name="v20221031"></a>
    ## [v20221031] - 2022-10-31
    ### Pull Requests
    - Merge pull request [#1](https://github.com/m-weigand/pinenote-debian-recipes/issues/1) from not-a-doctor-stromberg/patch-1
    
    
    [Unreleased]: https://github.com/m-weigand/pinenote-debian-recipes/compare/v0.3-beta1...HEAD
    [v0.3-beta1]: https://github.com/m-weigand/pinenote-debian-recipes/compare/v20221031...v0.3-beta1
    [v20221031]: https://github.com/m-weigand/pinenote-debian-recipes/compare/v0.1...v20221031
    
    
    # git log shows all commits
    aaron@aarons-mbp pinenote-debian-recipes % git --no-pager log v20221031..v0.3-beta1
    commit 55bd0c34c32bc1338edf194e8f37fb893631e1be (HEAD -> mw_image, tag: v0.3-beta1, origin/mw_image, origin/HEAD)
    Author: Maximilian Weigand <[email protected]>
    Date:   Mon Dec 12 08:52:35 2022 +0100
    
        use new xpp version
    
    commit 40e0d35c77fca6d130a070c405615d7ce4cd1e7b
    Author: Maximilian Weigand <[email protected]>
    Date:   Mon Dec 12 08:52:21 2022 +0100
    
        set ebc refresh_threshold=30
    
    commit 7be2485aedecb7dcfd01db2d9b303d1262dc8097
    Author: Maximilian Weigand <[email protected]>
    Date:   Fri Dec 9 19:53:09 2022 +0100
    
        fix xournalpp deb name and use proper bookworm-modified mutter
    
    commit 2159faea5ea2df87ac522bcf294cca9730c0645e
    Author: Maximilian Weigand <[email protected]>
    Date:   Thu Dec 8 19:51:55 2022 +0100
    
        another large round of updates
    
    commit 175e5897bdedb5aeb04a7c4ef951e856d8095a02
    Merge: b82f3d0 3ed014b
    Author: Maximilian Weigand <[email protected]>
    Date:   Thu Dec 1 11:59:06 2022 +0100
    
        Merge branch 'mw_image' of github.com:m-weigand/pinenote-debian-recipes into mw_image
    
    commit b82f3d09e2ed4f57b0dbb4d2c9a9c6b3021d1d83
    Author: Maximilian Weigand <[email protected]>
    Date:   Thu Dec 1 11:54:55 2022 +0100
    
        prepare the next iteration of the rootfs
    
    commit 3ed014bc0db592561f162fd62d8e5cfb3b9f8762
    Merge: 661803c af59a6e
    Author: Maximilian Weigand <[email protected]>
    Date:   Thu Dec 1 09:28:17 2022 +0100
    
        Merge pull request #5 from SomeoneToIgnore/pin-custom-debs
    
         Do not allow updating patched deb packages
    
    commit af59a6e2fe44b2be4b2dca84ff4a93c5b6e6a195
    Author: Kirill Bulatov <[email protected]>
    Date:   Mon Nov 7 10:27:10 2022 +0000
    
        Do not allow updating patched deb packages
    

    Your Environment

    • OS: Darwin aarons-mbp.lan 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000 arm64
    • git-chglog version: git-chglog version 0.15.1
  • Feature: support JIRA bearer token (PAT)

    Feature: support JIRA bearer token (PAT)

    What does this do / why do we need it?

    As already requested (see https://github.com/git-chglog/git-chglog/issues/154), this PR aims to bring JIRA personal access token support(PAT).

    How this PR fixes the problem?

    Ability to provide a PAT to authenticate against JIRA.

    What should your reviewer look out for in this PR?

    If well-implemented w/o any regressions and documented.

    Check lists

    • [x] Test passed
    • [x] Coding style (indentation, etc)

    Additional Comments (if any)

    {Please write here}

    Which issue(s) does this PR fix?

    typo in JiraOptions struct.

  • Note keywords not being recognized

    Note keywords not being recognized

    I've been trying to get the note functionality working but it seems like my keywords are not being recognized in my commit messages. I'm using the default configs that are created with the --init flag

    Expected Behavior

    A commit message containing a note with the "BREAKING CHANGE" keyword adds a note in the changelog.

    Actual Behavior

    A commit message is created but no notes section is made.

    <a name="thisisatesttag"></a>
    ## [thisisatesttag] - 2022-10-03
    ### Fix
    - some BREAKING CHANGE is being made
    
    

    Steps to Reproduce (including precondition)

    git-commit -m "fix: some BREAKING CHANGE is being made"
    git tag thisisatesttag <commit>
    git notes add thisisatesttag -m "BREAKING CHANGE: This is a breaking change"
    git-chglog
    

    Your Environment

    • OS: RHEL
    • git-chglog version: 0.15.1
  • invalid default config.yml

    invalid default config.yml

    Error: 28:24 [new-line-at-end-of-file] no new line character at the end of file

    Expected Behavior

    {Please write here}

    Actual Behavior

    {Please write here}

    Steps to Reproduce (including precondition)

    {Please write here}

    Screenshot on This Problem (if possible)

    {Please write here}

    Your Environment

    • OS: {Please write here}
    • git-chglog version: {Please write here}
  • new release

    new release

    When will a new release of git-chglog be published?

    Expected Behavior

    {Please write here}

    Actual Behavior

    {Please write here}

    Steps to Reproduce (including precondition)

    {Please write here}

    Screenshot on This Problem (if possible)

    {Please write here}

    Your Environment

    • OS: {Please write here}
    • git-chglog version: {Please write here}
chglog is a changelog management library and tool

chglog chglog is a changelog management library and tool Why While there are other tool out there that will create a changelog output as part of their

Nov 16, 2022
🥄A simple generator for semantic git messages.

?? Tablespoon EXPERIMENTAL PREVIEW A simple generator for semantic git messages. Installation | Contributing Tablespoon is a simple generator which ca

Jul 22, 2022
ReGit: A Tiny Git-Compatible Git Implementation written in Golang

ReGit is a tiny Git implementation written in Golang. It uses the same underlying file formats as Git. Therefore, all the changes made by ReGit can be checked by Git.

Oct 31, 2022
Gitlab include draftsman in golang
Gitlab include draftsman in golang

Gitlab include draftsman WIP Утилита, которая рисует graph include'ов из gitlab-ci Как работает пока: Считывает из app.env файла(который должен быть в

Oct 31, 2021
CHANGELOG generator implemented in Go (Golang).
CHANGELOG generator implemented in Go (Golang).

git-chglog CHANGELOG generator implemented in Go (Golang). Anytime, anywhere, Write your CHANGELOG. Table of Contents git-chglog Table of Contents Fea

Jan 7, 2023
A cross-platform changelog file generator

changelogger A changelog file generator heavily inspired on towncrier. Why? I'm looking for an alternative to towncrier that doesn't require a Python

Jul 27, 2022
📖 Elegant changelog generator

English | 中文简体 whatchanged An elegant changelog generator. Focus on Elegant/Simple/Efficient/Scalable Feel the magic online Feature: Cross-platform su

Nov 11, 2022
a fast changelog generator sourced from PRs and Issues

chronicle A fast changelog generator that sources changes from GitHub PRs and issues, organized by labels. chronicle --since-tag v0.16.0 chronicle --s

Nov 19, 2022
chglog is a changelog management library and tool

chglog chglog is a changelog management library and tool Why While there are other tool out there that will create a changelog output as part of their

Nov 16, 2022
Changelog management tool, avoid merge conflicts and generate markdown changelogs.

chalog This is chalog, a changelog management tool. With chalog you can manage your project's changelog in a simple markdown format, split across mult

Jul 7, 2022
Generate simple CHANGELOG

changelog Generate simple CHANGELOG Install Download the one that suits your environment and place it in a location that is in your PATH. https://gith

Oct 10, 2021
A CLI to replace your git commit command, so your git message can partially follow the Conventional Changelog ecosystem
A CLI to replace your git commit command, so your git message can partially follow the Conventional Changelog ecosystem

COMMIT CLI A CLI to replace your git commit command, so your git message can partially follow the Conventional Changelog ecosystem. And yes, it is bui

Feb 9, 2022
A festive Christmas tree GIF generator implemented using only Golang standard library code
A festive Christmas tree GIF generator implemented using only Golang standard library code

Christmas Tree GIF Generator A festive Christmas tree GIF generator implemented

Feb 4, 2022
A Twirp RPC OpenAPI generator implemented as `protoc` plugin

twirp-openapi-gen A Twirp RPC OpenAPI generator implemented as protoc plugin Currently supports only OpenAPI 2.0 Usage Installing the generator for pr

May 26, 2022
DND-magic-item-Generator - D&D magic item generator like in Diablo

DND-magic-item-Generator D&D magic item generator like in Diablo Legendary items

Mar 28, 2022
A CLI tool implemented by Golang to manage `CloudComb` resource

CloudComb CLI tool: comb Get Started comb is a CLI tool for manage resources in CloudComb base on cloudcomb-go-sdk. Support Mac, Linux and Windows. We

Jan 4, 2021
High-performance minimalist queue implemented using a stripped-down lock-free ringbuffer, written in Go (golang.org)

This project is no longer maintained - feel free to fork the project! gringo A high-performance minimalist queue implemented using a stripped-down loc

Oct 24, 2022
Snake game implemented in golang

little_pineapple(Snake game implemented in golang) 贪吃蛇golang实现 Snake game implemented in golang 数据结构:链表&数组 Data structures used: linked list&array 使用方

Aug 18, 2020
communicate with iOS devices implemented with Golang

Golang-iDevice much more easy to use ?? electricbubble/gidevice-cli Installation go get github.com/electricbubble/gidevice Devices package main impor

Dec 18, 2022