├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── .github └── workflows │ └── gradle-ci.yaml ├── .gitignore ├── changelog_mediawiki.mustache ├── changelog_html.mustache ├── changelog.mustache ├── changelog.json ├── generate_changelog.sh ├── gradlew.bat ├── gradlew ├── LICENSE ├── README.md ├── src └── main │ └── java │ └── se │ └── bjurr │ └── gitchangelog │ └── main │ └── Main.java └── CHANGELOG.md /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | mavenCentral() 5 | mavenLocal() 6 | } 7 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomasbjerre/git-changelog-command-line/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | #Tue Oct 07 20:34:13 CEST 2025 3 | description="Command line tool that generates changelog from a GIT repository." 4 | group=se.bjurr.gitchangelog 5 | version=3.0.0 6 | -------------------------------------------------------------------------------- /.github/workflows/gradle-ci.yaml: -------------------------------------------------------------------------------- 1 | name: Bundle Gradle CI 2 | 3 | on: [workflow_dispatch, push, pull_request] 4 | 5 | jobs: 6 | call-workflow: 7 | uses: tomasbjerre/.github/.github/workflows/bundle-gradle-ci.yaml@master 8 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .classpath 3 | .project 4 | .settings 5 | generated-src 6 | build 7 | target 8 | bin 9 | temp 10 | .gradle 11 | .couscous 12 | couscous.phar 13 | .okhttpcache 14 | node_modules 15 | index.js 16 | package.json 17 | package-lock.json 18 | node_modules 19 | docker/git-changelog-command-line.jar 20 | .vscode 21 | .sdkmanrc 22 | 23 | -------------------------------------------------------------------------------- /changelog_mediawiki.mustache: -------------------------------------------------------------------------------- 1 | __NOTOC__ 2 | 3 | = Git Changelog changelog = 4 | Changelog of Git Changelog. 5 | 6 | {{#tags}} 7 | == {{name}} == 8 | {{#issues}} 9 | {{#hasIssue}} 10 | {{#hasLink}} 11 | === {{name}} [{{link}} {{issue}}] {{title}} === 12 | {{/hasLink}} 13 | {{^hasLink}} 14 | === {{name}} {{issue}} {{title}} === 15 | {{/hasLink}} 16 | {{/hasIssue}} 17 | {{^hasIssue}} 18 | === {{name}} === 19 | {{/hasIssue}} 20 | 21 | {{#commits}} 22 | [https://github.com/tomasbjerre/git-changelog-lib/commit/{{hash}} {{hash}}] {{authorName}} {{commitTime}} 23 | 24 | {{{message}}} 25 | 26 | 27 | {{/commits}} 28 | 29 | {{/issues}} 30 | {{/tags}} 31 | -------------------------------------------------------------------------------- /changelog_html.mustache: -------------------------------------------------------------------------------- 1 |

Git Changelog changelog

2 | 3 |

4 | Changelog of Git Changelog. 5 |

6 | 7 | {{#tags}} 8 |

{{name}}

9 | {{#issues}} 10 | {{#hasIssue}} 11 | {{#hasLink}} 12 |

{{name}} {{issue}} {{title}}

13 | {{/hasLink}} 14 | {{^hasLink}} 15 |

{{name}} {{issue}} {{title}}

16 | {{/hasLink}} 17 | {{/hasIssue}} 18 | {{^hasIssue}} 19 |

{{name}}

20 | {{/hasIssue}} 21 | 22 | 23 | {{#commits}} 24 | {{hash}} {{authorName}} {{commitTime}} 25 |

26 | {{{message}}} 27 |

28 | 29 | 30 | {{/commits}} 31 | 32 | {{/issues}} 33 | {{/tags}} 34 | -------------------------------------------------------------------------------- /changelog.mustache: -------------------------------------------------------------------------------- 1 | # Git Changelog Command Line changelog 2 | 3 | Changelog of Git Changelog Command Line. 4 | 5 | {{#tags}} 6 | ## {{name}} 7 | {{#issues}} 8 | {{#hasIssue}} 9 | {{#hasLink}} 10 | ### {{name}} [{{issue}}]({{link}}) {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}} 11 | {{/hasLink}} 12 | {{^hasLink}} 13 | ### {{name}} {{issue}} {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}} 14 | {{/hasLink}} 15 | {{/hasIssue}} 16 | {{^hasIssue}} 17 | ### {{name}} 18 | {{/hasIssue}} 19 | 20 | {{#commits}} 21 | **{{{messageTitle}}}** 22 | 23 | {{#messageBodyItems}} 24 | * {{.}} 25 | {{/messageBodyItems}} 26 | 27 | [{{hash}}](https://github.com/tomasbjerre/git-changelog-command-line/commit/{{hash}}) {{authorName}} *{{commitTime}}* 28 | 29 | {{/commits}} 30 | 31 | {{/issues}} 32 | {{/tags}} 33 | -------------------------------------------------------------------------------- /changelog.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePath": "changelog.json", 3 | "fromRepo": ".", 4 | "fromCommit": "0000000000000000000000000000000000000000", 5 | "toRef": "refs/heads/master", 6 | "ignoreCommitsIfMessageMatches": "^\\[maven-release-plugin\\].*|^\\[Gradle Release Plugin\\].*|^Merge.*", 7 | "readableTagName": "/([^/]+?)$", 8 | "dateFormat": "YYYY-MM-dd HH:mm:ss", 9 | "untaggedName": "Next release", 10 | "noIssueName": "Other changes", 11 | "timeZone": "UTC", 12 | "removeIssueFromMessage": "true", 13 | "jiraServer": "https://jiraserver/jira", 14 | "jiraIssuePattern": "\\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b", 15 | "gitHubApi": "https://api.github.com/repos/tomasbjerre/git-changelog-command-line", 16 | "gitHubIssuePattern": "#([0-9]+)", 17 | "customIssues": [ 18 | { 19 | "name": "Incident", 20 | "pattern": "INC[0-9]*", 21 | "link": "http://inc/${PATTERN_GROUP}" 22 | }, 23 | { 24 | "name": "CQ", 25 | "pattern": "CQ([0-9]+)", 26 | "link": "http://cq/${PATTERN_GROUP_1}" 27 | }, 28 | { 29 | "name": "Bugs", 30 | "pattern": "#bug" 31 | } 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /generate_changelog.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | ROOT_FOLDER=`pwd` 3 | cd build/libs 4 | 5 | VERSION=1.100.2 6 | 7 | java -jar git-changelog-command-line-$VERSION.jar -h 8 | 9 | # 10 | #Actual changelog to be used in root of repo 11 | # 12 | 13 | java -jar git-changelog-command-line-$VERSION.jar -gapi https://api.github.com/repos/tomasbjerre/git-changelog-command-line/ -gtok $GITHUB_OAUTH2TOKEN -t $ROOT_FOLDER/changelog.mustache -sf $ROOT_FOLDER/changelog.json -of $ROOT_FOLDER/CHANGELOG.md 14 | 15 | #java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog_mediawiki.mustache -sf $ROOT_FOLDER/changelog.json -murl http://localhost/mediawiki -mu tomas -mp tomaskod -mt "Tomas Title" -gapi https://api.github.com/repos/tomasbjerre/git-changelog-lib 16 | 17 | # 18 | #test cases 19 | # 20 | 21 | ## Print to stdout 22 | java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog.mustache -sf $ROOT_FOLDER/changelog.json --stdout -tc 224cad580426bc03027b77c1036306253cbba973 23 | 24 | ## Write to file 25 | java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog.mustache -sf $ROOT_FOLDER/changelog.json -of $ROOT_FOLDER/src/test/resources/testThatJsonCanBeUsedActual.md -tc 224cad580426bc03027b77c1036306253cbba973 26 | 27 | ## Write to file 28 | java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog.mustache -sf $ROOT_FOLDER/changelog.json -of $ROOT_FOLDER/src/test/resources/testThatCommitsCanBeIgnoredIfNoIssue.md -ini 29 | 30 | ## Ignore tags example, ignoring all 1.1x 31 | java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog.mustache -sf $ROOT_FOLDER/changelog.json -of $ROOT_FOLDER/src/test/resources/testThatTagsCanBeIgnored.md -itp ".*[0-9]{2}$" 32 | 33 | ## Create MediaWiki page 34 | java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog_mediawiki.mustache -sf $ROOT_FOLDER/changelog.json -murl http://localhost/mediawiki -mu tomas -mp tomaskod -mt "Tomas Title" -tc 224cad580426bc03027b77c1036306253cbba973 35 | 36 | ## Use variables from command line 37 | java -jar git-changelog-command-line-$VERSION.jar -ex "{\"var1\":\"value1\"}" -tec "extended variable: {{extended.var1}}" -of $ROOT_FOLDER/src/test/resources/testThatVariablesCanBeUsed.md 38 | 39 | ## Use GitLab issues 40 | java -jar git-changelog-command-line-$VERSION.jar -fc 67b9976 -tc e281256 -gls https://gitlab.com/ -glt $GITLAB_TOKEN -glpn violations-test -t $ROOT_FOLDER/changelog.mustache -of $ROOT_FOLDER/src/test/resources/gitLabChangelog.md 41 | 42 | ## Ignore tags older 43 | java -jar git-changelog-command-line-$VERSION.jar -t $ROOT_FOLDER/changelog.mustache -of $ROOT_FOLDER/src/test/resources/testThatCommitsCanBeIgnoredByTime.md -iot "2017-04-01 00:00:00" 44 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | @rem SPDX-License-Identifier: Apache-2.0 17 | @rem 18 | 19 | @if "%DEBUG%"=="" @echo off 20 | @rem ########################################################################## 21 | @rem 22 | @rem Gradle startup script for Windows 23 | @rem 24 | @rem ########################################################################## 25 | 26 | @rem Set local scope for the variables with windows NT shell 27 | if "%OS%"=="Windows_NT" setlocal 28 | 29 | set DIRNAME=%~dp0 30 | if "%DIRNAME%"=="" set DIRNAME=. 31 | @rem This is normally unused 32 | set APP_BASE_NAME=%~n0 33 | set APP_HOME=%DIRNAME% 34 | 35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 | 38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 | 41 | @rem Find java.exe 42 | if defined JAVA_HOME goto findJavaFromJavaHome 43 | 44 | set JAVA_EXE=java.exe 45 | %JAVA_EXE% -version >NUL 2>&1 46 | if %ERRORLEVEL% equ 0 goto execute 47 | 48 | echo. 1>&2 49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 | echo. 1>&2 51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 | echo location of your Java installation. 1>&2 53 | 54 | goto fail 55 | 56 | :findJavaFromJavaHome 57 | set JAVA_HOME=%JAVA_HOME:"=% 58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 | 60 | if exist "%JAVA_EXE%" goto execute 61 | 62 | echo. 1>&2 63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 | echo. 1>&2 65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 | echo location of your Java installation. 1>&2 67 | 68 | goto fail 69 | 70 | :execute 71 | @rem Setup the command line 72 | 73 | 74 | 75 | @rem Execute Gradle 76 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* 77 | 78 | :end 79 | @rem End local scope for the variables with windows NT shell 80 | if %ERRORLEVEL% equ 0 goto mainEnd 81 | 82 | :fail 83 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 84 | rem the _cmd.exe /c_ return code! 85 | set EXIT_CODE=%ERRORLEVEL% 86 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 87 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 88 | exit /b %EXIT_CODE% 89 | 90 | :mainEnd 91 | if "%OS%"=="Windows_NT" endlocal 92 | 93 | :omega 94 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | # SPDX-License-Identifier: Apache-2.0 19 | # 20 | 21 | ############################################################################## 22 | # 23 | # Gradle start up script for POSIX generated by Gradle. 24 | # 25 | # Important for running: 26 | # 27 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 28 | # noncompliant, but you have some other compliant shell such as ksh or 29 | # bash, then to run this script, type that shell name before the whole 30 | # command line, like: 31 | # 32 | # ksh Gradle 33 | # 34 | # Busybox and similar reduced shells will NOT work, because this script 35 | # requires all of these POSIX shell features: 36 | # * functions; 37 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 38 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 39 | # * compound commands having a testable exit status, especially «case»; 40 | # * various built-in commands including «command», «set», and «ulimit». 41 | # 42 | # Important for patching: 43 | # 44 | # (2) This script targets any POSIX shell, so it avoids extensions provided 45 | # by Bash, Ksh, etc; in particular arrays are avoided. 46 | # 47 | # The "traditional" practice of packing multiple parameters into a 48 | # space-separated string is a well documented source of bugs and security 49 | # problems, so this is (mostly) avoided, by progressively accumulating 50 | # options in "$@", and eventually passing that to Java. 51 | # 52 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 53 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 54 | # see the in-line comments for details. 55 | # 56 | # There are tweaks for specific operating systems such as AIX, CygWin, 57 | # Darwin, MinGW, and NonStop. 58 | # 59 | # (3) This script is generated from the Groovy template 60 | # https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 61 | # within the Gradle project. 62 | # 63 | # You can find Gradle at https://github.com/gradle/gradle/. 64 | # 65 | ############################################################################## 66 | 67 | # Attempt to set APP_HOME 68 | 69 | # Resolve links: $0 may be a link 70 | app_path=$0 71 | 72 | # Need this for daisy-chained symlinks. 73 | while 74 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 75 | [ -h "$app_path" ] 76 | do 77 | ls=$( ls -ld "$app_path" ) 78 | link=${ls#*' -> '} 79 | case $link in #( 80 | /*) app_path=$link ;; #( 81 | *) app_path=$APP_HOME$link ;; 82 | esac 83 | done 84 | 85 | # This is normally unused 86 | # shellcheck disable=SC2034 87 | APP_BASE_NAME=${0##*/} 88 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 89 | APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | 118 | 119 | # Determine the Java command to use to start the JVM. 120 | if [ -n "$JAVA_HOME" ] ; then 121 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 122 | # IBM's JDK on AIX uses strange locations for the executables 123 | JAVACMD=$JAVA_HOME/jre/sh/java 124 | else 125 | JAVACMD=$JAVA_HOME/bin/java 126 | fi 127 | if [ ! -x "$JAVACMD" ] ; then 128 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 129 | 130 | Please set the JAVA_HOME variable in your environment to match the 131 | location of your Java installation." 132 | fi 133 | else 134 | JAVACMD=java 135 | if ! command -v java >/dev/null 2>&1 136 | then 137 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 138 | 139 | Please set the JAVA_HOME variable in your environment to match the 140 | location of your Java installation." 141 | fi 142 | fi 143 | 144 | # Increase the maximum file descriptors if we can. 145 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 146 | case $MAX_FD in #( 147 | max*) 148 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 149 | # shellcheck disable=SC2039,SC3045 150 | MAX_FD=$( ulimit -H -n ) || 151 | warn "Could not query maximum file descriptor limit" 152 | esac 153 | case $MAX_FD in #( 154 | '' | soft) :;; #( 155 | *) 156 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 157 | # shellcheck disable=SC2039,SC3045 158 | ulimit -n "$MAX_FD" || 159 | warn "Could not set maximum file descriptor limit to $MAX_FD" 160 | esac 161 | fi 162 | 163 | # Collect all arguments for the java command, stacking in reverse order: 164 | # * args from the command line 165 | # * the main class name 166 | # * -classpath 167 | # * -D...appname settings 168 | # * --module-path (only if needed) 169 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 170 | 171 | # For Cygwin or MSYS, switch paths to Windows format before running java 172 | if "$cygwin" || "$msys" ; then 173 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 174 | 175 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 176 | 177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 178 | for arg do 179 | if 180 | case $arg in #( 181 | -*) false ;; # don't mess with options #( 182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 183 | [ -e "$t" ] ;; #( 184 | *) false ;; 185 | esac 186 | then 187 | arg=$( cygpath --path --ignore --mixed "$arg" ) 188 | fi 189 | # Roll the args list around exactly as many times as the number of 190 | # args, so each arg winds up back in the position where it started, but 191 | # possibly modified. 192 | # 193 | # NB: a `for` loop captures its iteration list before it begins, so 194 | # changing the positional parameters here affects neither the number of 195 | # iterations, nor the values presented in `arg`. 196 | shift # remove old arg 197 | set -- "$@" "$arg" # push replacement arg 198 | done 199 | fi 200 | 201 | 202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 204 | 205 | # Collect all arguments for the java command: 206 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 207 | # and any embedded shellness will be escaped. 208 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 209 | # treated as '${Hostname}' itself on the command line. 210 | 211 | set -- \ 212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 213 | -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ 214 | "$@" 215 | 216 | # Stop when "xargs" is not available. 217 | if ! command -v xargs >/dev/null 2>&1 218 | then 219 | die "xargs is not available" 220 | fi 221 | 222 | # Use "xargs" to parse quoted args. 223 | # 224 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 225 | # 226 | # In Bash we could simply go: 227 | # 228 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 229 | # set -- "${ARGS[@]}" "$@" 230 | # 231 | # but POSIX shell has neither arrays nor command substitution, so instead we 232 | # post-process each arg (as a line of input to sed) to backslash-escape any 233 | # character that might be a shell metacharacter, then use eval to reverse 234 | # that process (while maintaining the separation between arguments), and wrap 235 | # the whole thing up as a single "set" statement. 236 | # 237 | # This will of course break if any of these variables contains a newline or 238 | # an unmatched quote. 239 | # 240 | 241 | eval "set -- $( 242 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 243 | xargs -n1 | 244 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 245 | tr '\n' ' ' 246 | )" '"$@"' 247 | 248 | exec "$JAVACMD" "$@" 249 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Git Changelog Command Line 2 | 3 | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/se.bjurr.gitchangelog/git-changelog-command-line/badge.svg)](https://maven-badges.herokuapp.com/maven-central/se.bjurr.gitchangelog/git-changelog-command-line) 4 | [![NPM](https://img.shields.io/npm/v/git-changelog-command-line.svg?style=flat-square)](https://www.npmjs.com/package/git-changelog-command-line) 5 | [![NPM Downloads](https://img.shields.io/npm/dm/git-changelog-command-line.svg?style=flat)](https://www.npmjs.com/package/git-changelog-command-line) 6 | [![Docker Pulls](https://badgen.net/docker/pulls/tomasbjerre/git-changelog-command-line?icon=docker&label=pulls)](https://hub.docker.com/r/tomasbjerre/git-changelog-command-line/) 7 | 8 | This is a command line tool for generating a changelog, or releasenotes, from a GIT repository. It uses the [Git Changelog Lib](https://github.com/tomasbjerre/git-changelog-lib). 9 | 10 | This is a Java application (runnable `jar`) packaged into an `NPM` package for convenience. 11 | 12 | - The runnable `jar` can be found in [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22git-changelog-command-line%22) and used like `java -jar git-changelog-command-line-*.jar ....`. 13 | - The `npm` package can be found in [NPM](https://www.npmjs.com/package/git-changelog-command-line). 14 | - The `Docker` image can be found in [Dockerhub](https://hub.docker.com/r/tomasbjerre/git-changelog-command-line) and used like `docker run --mount src="$(pwd)",target=/usr/src/git-changelog-command-line,type=bind tomasbjerre/git-changelog-command-line:X --help`. 15 | 16 | | Version | Java Version | 17 | | ------------------------ | ------------ | 18 | | version < 2.0.0 | 8 | 19 | | 2.0.0 <= version < 2.3.0 | 11 | 20 | | 2.3.0 <= version | 17 | 21 | 22 | ## Example - Simple 23 | 24 | A changelog can be created like this. 25 | 26 | ```shell 27 | npx git-changelog-command-line -std 28 | ``` 29 | 30 | Or, you can specify a template: 31 | 32 | ```shell 33 | npx git-changelog-command-line -std -tec " 34 | # Changelog 35 | 36 | Changelog. 37 | 38 | {{#tags}} 39 | ## {{name}} 40 | {{#issues}} 41 | {{#hasIssue}} 42 | {{#hasLink}} 43 | ### {{name}} [{{issue}}]({{link}}) {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}} 44 | {{/hasLink}} 45 | {{^hasLink}} 46 | ### {{name}} {{issue}} {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}} 47 | {{/hasLink}} 48 | {{/hasIssue}} 49 | {{^hasIssue}} 50 | ### {{name}} 51 | {{/hasIssue}} 52 | 53 | {{#commits}} 54 | **{{{messageTitle}}}** 55 | 56 | {{#messageBodyItems}} 57 | * {{.}} 58 | {{/messageBodyItems}} 59 | 60 | [{{hash}}](https://github.com/{{ownerName}}/{{repoName}}/commit/{{hash}}) {{authorName}} *{{commitTime}}* 61 | 62 | {{/commits}} 63 | 64 | {{/issues}} 65 | {{/tags}} 66 | " 67 | ``` 68 | 69 | ## Example - Semantic versioning from conventional commits 70 | 71 | If you are using [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/): 72 | 73 | ```shell 74 | [optional scope]: 75 | 76 | [optional body] 77 | 78 | [optional footer(s)] 79 | ``` 80 | 81 | The highest version can be determined with: 82 | 83 | ```shell 84 | 85 | highestTag=$(npx git-changelog-command-line \ 86 | --print-highest-version-tag) 87 | 88 | echo Last release detected as $highestTag 89 | ``` 90 | 91 | You can also get the tag with `--print-highest-version-tag`. Highest version may be `1.2.3` and highest tag may be `v1.2.3`. 92 | 93 | Next version to release can be determined with: 94 | 95 | ```shell 96 | nextVersion=$(npx git-changelog-command-line \ 97 | --print-next-version) 98 | 99 | echo Next release based on commits is: $nextVersion 100 | ``` 101 | 102 | There are default patterns, but you can specify the patterns with: 103 | 104 | - `--major-version-pattern REGEXP` 105 | - `--minor-version-pattern REGEXP` 106 | - `--patch-version-pattern REGEXP` 107 | 108 | By default it will match anything as patch, like `chore: whatever` and not only `fix: whatever`. You can change that with: 109 | 110 | ```shell 111 | highestVersion=$(npx git-changelog-command-line \ 112 | --print-highest-version) 113 | 114 | highestVersionTag=$(npx git-changelog-command-line \ 115 | --print-highest-version-tag) 116 | 117 | currentVersion=$(npx git-changelog-command-line \ 118 | --patch-version-pattern "^fix.*" \ 119 | --print-current-version) 120 | 121 | if [ -z "$highestVersionTag" ]; then 122 | echo "This is the first version in the repo, using 0.0.1 as version" 123 | currentVersion=0.0.1 124 | else if [ "$currentVersion" == "$highestVersion" ]; then 125 | echo "No changes made that can be released" 126 | else 127 | echo "Changes detected and a new $currentVersion release can be made" 128 | fi 129 | ``` 130 | 131 | A changelog can be rendered (using [Helpers](https://github.com/tomasbjerre/git-changelog-lib#Helpers)) like this: 132 | 133 | ```shell 134 | npx git-changelog-command-line \ 135 | --to-ref HEAD \ 136 | --stdout \ 137 | --template-content " 138 | # Changelog 139 | 140 | {{#tags}} 141 | {{#ifReleaseTag .}} 142 | ## [{{name}}](https://github.com/tomasbjerre/someproject/compare/{{name}}) ({{tagDate .}}) 143 | 144 | {{#ifContainsType commits type='feat'}} 145 | ### Features 146 | 147 | {{#commits}} 148 | {{#ifCommitType . type='feat'}} 149 | - {{#eachCommitScope .}} **{{.}}** {{/eachCommitScope}} {{{commitDescription .}}} ([{{hash}}](https://github.com/tomasbjerre/someproject/commit/{{hashFull}})) 150 | {{/ifCommitType}} 151 | {{/commits}} 152 | {{/ifContainsType}} 153 | 154 | {{#ifContainsType commits type='fix'}} 155 | ### Bug Fixes 156 | 157 | {{#commits}} 158 | {{#ifCommitType . type='fix'}} 159 | - {{#eachCommitScope .}} **{{.}}** {{/eachCommitScope}} {{{commitDescription .}}} ([{{hash}}](https://github.com/tomasbjerre/someproject/commit/{{hashFull}})) 160 | {{/ifCommitType}} 161 | {{/commits}} 162 | {{/ifContainsType}} 163 | 164 | {{/ifReleaseTag}} 165 | {{/tags}} 166 | " 167 | ``` 168 | 169 | Or you can prepend to the current changelog. You may get `$nextVersion` from `--print-next-version` and `$highestTag` from `--print-highest-version-tag`. Somehting like this: 170 | 171 | ```shell 172 | npx git-changelog-command-line \ 173 | --from-ref $highestTag \ 174 | --to-ref HEAD \ 175 | --prepend-to-file CHANGELOG.md \ 176 | --template-content " 177 | ## $nextVersion 178 | 179 | {{#ifContainsType commits type='feat'}} 180 | ## Features 181 | {{#commits}} 182 | {{#ifCommitType . type='feat'}} 183 | {{#eachCommitScope .}} **{{.}}** {{/eachCommitScope}} {{{commitDescription .}}} ([{{hash}}](https://github.com/tomasbjerre/someproject/commit/{{hashFull}})) 184 | {{/ifCommitType}} 185 | {{/commits}} 186 | {{/ifContainsType}} 187 | 188 | {{#ifContainsType commits type='fix'}} 189 | ## Bug Fixes 190 | {{#commits}} 191 | {{#ifCommitType . type='fix'}} 192 | {{#eachCommitScope .}} **{{.}}** {{/eachCommitScope}} {{{commitDescription .}}} ([{{hash}}](https://github.com/tomasbjerre/someproject/commit/{{hashFull}})) 193 | {{/ifCommitType}} 194 | {{/commits}} 195 | {{/ifContainsType}} 196 | " 197 | ``` 198 | 199 | ### Example NPM and `package.json` 200 | 201 | If you are using NPM, you may want to add this to your `package.json`: 202 | 203 | ```json 204 | { 205 | "scripts": { 206 | "build": "echo build it...", 207 | "release": "npm run set-version; npm run build && npm publish && npm run changelog", 208 | "set-version": "npm version $(npx git-changelog-command-line --print-next-version)", 209 | "changelog": "npx git-changelog-command-line -of CHANGELOG.md && git commit -a -m 'chore: changelog' && git push --follow-tags" 210 | } 211 | } 212 | ``` 213 | 214 | And if you do `npm run release` it will: 215 | 216 | - Set version in `package.json` 217 | - Build the repo 218 | - Publish it 219 | - Update CHANGELOG.md 220 | 221 | ## Example - custom helpers 222 | 223 | You can supply your own helpers and use them in the template. 224 | 225 | ```shell 226 | npx git-changelog-command-line \ 227 | --to-ref HEAD \ 228 | --stdout \ 229 | --template-content " 230 | {{#commits}} 231 | {{#startsWith messageTitle s='feat'}} 232 | Starts with feat: "{{messageTitle}}" 233 | first 10 letters of hash is: {{firstLetters hash number='10'}} 234 | {{/startsWith}} 235 | {{/commits}} 236 | " \ 237 | --register-handlebars-helper " 238 | Handlebars.registerHelper('firstLetters', function(input, options) { 239 | const number = parseInt(options.hash['number'] || "0") 240 | return input.substring(0,number); 241 | }); 242 | 243 | Handlebars.registerHelper('startsWith', function(from, options) { 244 | const s = options.hash['s'] 245 | if (new RegExp('^' + s + '.*').test(from)) { 246 | return options.fn(this); 247 | } else { 248 | return options.inverse(this); 249 | } 250 | }); 251 | " 252 | ``` 253 | 254 | # Usage 255 | 256 | Or from command line: 257 | 258 | ```shell 259 | -cl, --custom-issue-link Custom issue link. 260 | Supports variables like 261 | ${PATTERN_GROUP_1} to inject variables 262 | from pattern. 263 | : any string 264 | Default: null 265 | -cn, --custom-issue-name Custom issue name. 266 | : any string 267 | Default: null 268 | -cp, --custom-issue-pattern Custom issue pattern. 269 | : any string 270 | Default: null 271 | -ct, --custom-issue-title Custom issue title. 272 | Supports variables like 273 | ${PATTERN_GROUP_1} to inject variables 274 | from pattern. 275 | : any string 276 | Default: null 277 | -df, --date-format Format to use when 278 | printing dates. 279 | : any string 280 | Default: YYYY-MM-dd HH:mm:ss 281 | -eh, --extended-headers Extended headers that 282 | will send when access JIRA. 283 | e.g. -eh CF-Access- 284 | Client-ID:abcde12345xyz.access [Supports Multiple occurrences] 285 | : any string 286 | Default: Empty list 287 | -en, --encoding Encoding to use when 288 | writing content. 289 | : any string 290 | Default: UTF-8 291 | -ex, --extended-variables Extended variables 292 | that will be available as 293 | {{extended.*}}. -ex "{\"var1\": \" 294 | val1\"}" will print out "val1" 295 | for a template like 296 | "{{extended.var1}}" 297 | : any string 298 | Default: 299 | -fre, --from-revision From revision. 300 | : any string 301 | Default: 0000000000000000000000000000000000000000 302 | -frei, --from-revision-inclusiveness Include, or exclude, 303 | specified revision. 304 | : {INCLUSIVE | EXCLUSIVE | DEFAULT} 305 | Default: DEFAULT 306 | -gapi, --github-api GitHub API. Like: 307 | https://api.github. 308 | com/repos/tomasbjerre/git-changelog-command-line/ 309 | : any string 310 | Default: 311 | -ge, --github-enabled Enable parsing for 312 | GitHub issues. 313 | Default: disabled 314 | -gl, --gitlab-enabled Enable parsing for 315 | GitLab issues. 316 | Default: disabled 317 | -glp, --gitlab-issue-pattern GitLab issue pattern. 318 | : any string 319 | Default: 320 | -glpn, --gitlab-project-name GitLab project name. 321 | : any string 322 | Default: 323 | -gls, --gitlab-server GitLab server, like 324 | https://gitlab.com/. 325 | : any string 326 | Default: 327 | -glt, --gitlab-token GitLab API token. 328 | : any string 329 | Default: 330 | -gtok, --github-token GitHub API OAuth2 331 | token. You can get it from: 332 | curl -u 'yourgithubuser' -d 333 | '{"note":"Git Changelog Lib"}' 334 | https://api.github. 335 | com/authorizations 336 | : any string 337 | Default: 338 | -h, --help : an argument to print help for 339 | Default: If no specific parameter is given the whole usage text is given 340 | -handlebars-helper-file, -hhf Can be used to add 341 | extra helpers. 342 | : a file path 343 | Default: /home/bjerre/workspace/git-changelog/git-changelog-command-line/. 344 | -ini, --ignore-commits-without-issue Ignore commits that is 345 | not included in any issue. 346 | Default: disabled 347 | -iot, --ignore-older-than Ignore commits older 348 | than yyyy-MM-dd HH:mm:ss. 349 | : any string 350 | Default: 351 | -ip, --ignore-pattern Ignore commits where 352 | pattern matches message. 353 | : any string 354 | Default: ^Merge.* 355 | -itp, --ignore-tag-pattern Ignore tags that 356 | matches regular expression. 357 | Can be used to ignore 358 | release candidates and only 359 | include actual releases. 360 | : any string 361 | Default: null 362 | -jaf, --jira-additional-field Adds an additional 363 | field for Jira. When 364 | configured, we will return from 365 | Jira the result of this 366 | field, if it exists. [Supports Multiple occurrences] 367 | : any string 368 | Default: Empty list 369 | -jba, --jira-basic-auth Optional token to 370 | authenticate with Jira. 371 | : any string 372 | Default: \\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b 373 | -jbt, --jira-bearer Optional token to 374 | authenticate with Jira. 375 | : any string 376 | Default: \\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b 377 | -je, --jira-enabled Enable parsing for 378 | Jira issues. 379 | Default: disabled 380 | -jp, --jira-pattern Jira issue pattern. 381 | : any string 382 | Default: \\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b 383 | -jpw, --jira-password Optional password to 384 | authenticate with Jira. 385 | : any string 386 | Default: \\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b 387 | -js, --jiraServer, --jira-server Jira server. When a 388 | Jira server is given, the 389 | title of the Jira issues can 390 | be used in the changelog. 391 | : any string 392 | Default: null 393 | -ju, --jira-username Optional username to 394 | authenticate with Jira. 395 | : any string 396 | Default: \\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b 397 | -mavp, --major-version-pattern Commit messages 398 | matching this, optional, 399 | regular expression will 400 | trigger new major version. 401 | : any string 402 | Default: null 403 | -mivp, --minor-version-pattern Commit messages 404 | matching this, optional, 405 | regular expression will 406 | trigger new minor version. 407 | : any string 408 | Default: ^[Ff]eat.* 409 | -ni, --no-issue-name Name of virtual issue 410 | that contains commits that 411 | has no issue associated. 412 | : any string 413 | Default: No issue 414 | -of, --output-file Write output to file. 415 | : any string 416 | Default: 417 | -pavp, --patch-version-pattern Commit messages 418 | matching this, optional, 419 | regular expression will 420 | trigger new patch version. 421 | : any string 422 | Default: null 423 | -pcv, --print-current-version Like --print-next- 424 | version unless the current 425 | commit is tagged with a 426 | version, if so it will print 427 | that version. 428 | Default: disabled 429 | -pf, --path-filters Paths on the 430 | filesystem to filter on. [Supports Multiple occurrences] 431 | : any string 432 | Default: Empty list 433 | -phv, --print-highest-version Print the highest 434 | version, determined by tags in 435 | repo, and exit. 436 | Default: disabled 437 | -phvt, --print-highest-version-tag Print the tag 438 | corresponding to highest version, 439 | and exit. 440 | Default: disabled 441 | -pnv, --print-next-version Print the next 442 | version, determined by commits 443 | since highest version, and 444 | exit. 445 | Default: disabled 446 | -pt, --prepend-template Template to use when 447 | prepending. A default template 448 | will be used if not 449 | specified. 450 | : any string 451 | Default: changelog-prepend.mustache 452 | -ptf, --prepend-to-file Add the changelog to 453 | top of given file. 454 | : any string 455 | Default: null 456 | -r, --repo Repository. 457 | : any string 458 | Default: . 459 | -re, --redmine-enabled Enable parsing for 460 | Redmine issues. 461 | Default: disabled 462 | -rhh, --register-handlebars-helper Handlebar helpers, 463 | https://handlebarsjs. 464 | com/guide/block-helpers.html, to 465 | register and use in given 466 | template. 467 | : any string 468 | Default: 469 | -ri, --remove-issue-from-message Dont print any issues 470 | in the messages of 471 | commits. 472 | Default: disabled 473 | -rmp, --redmine-pattern Redmine issue pattern. 474 | : any string 475 | Default: #([0-9]+) 476 | -rmpw, --redmine-password Optional password to 477 | authenticate with Redmine. 478 | : any string 479 | Default: 480 | -rms, --redmine-server Redmine server. When a 481 | Redmine server is given, the 482 | title of the Redmine issues 483 | can be used in the 484 | changelog. 485 | : any string 486 | Default: null 487 | -rmt, --redmine-token Optional token/api-key 488 | to authenticate with 489 | Redmine. 490 | : any string 491 | Default: 492 | -rmu, --redmine-username Optional username to 493 | authenticate with Redmine. 494 | : any string 495 | Default: 496 | -rt, --readable-tag-name Pattern to extract 497 | readable part of tag. 498 | : any string 499 | Default: /([^/]+?)$ 500 | -sf, --settings-file Use settings from file. 501 | : any string 502 | Default: null 503 | --show-debug-info Please run your 504 | command with this parameter 505 | and supply output when 506 | reporting bugs. 507 | Default: disabled 508 | -std, --stdout Print builder to 509 | . 510 | Default: disabled 511 | -t, --template Template to use. A 512 | default template will be used 513 | if not specified. 514 | : any string 515 | Default: changelog.mustache 516 | -tbd, --template-base-dir Base dir of templates. 517 | : any string 518 | Default: null 519 | -tec, --template-content String to use as 520 | template. 521 | : any string 522 | Default: 523 | -tps, --template-partial-suffix File ending for 524 | partials. 525 | : any string 526 | Default: .hbs 527 | -tre, --to-revision To revision. 528 | : any string 529 | Default: refs/heads/master 530 | -trei, --to-revision-inclusiveness Include, or exclude, 531 | specified revision. 532 | : {INCLUSIVE | EXCLUSIVE | DEFAULT} 533 | Default: DEFAULT 534 | -tz, --time-zone TimeZone to use when 535 | printing dates. 536 | : any string 537 | Default: UTC 538 | -ui, --use-integrations Use integrations to 539 | get more details on 540 | commits. 541 | Default: disabled 542 | -ut, --untagged-name When listing commits 543 | per tag, this will by the 544 | name of a virtual tag that 545 | contains commits not available 546 | in any git tag. 547 | : any string 548 | Default: No tag 549 | ``` 550 | 551 | ## Usage - template base dir 552 | 553 | You can use [partials](http://jknack.github.io/handlebars.java/reuse.html) in your templates. 554 | 555 | `/dir/changelog.hbs` 556 | 557 | ```hbs 558 | {{#commits}} 559 | {{> commit}} 560 | {{/commits}} 561 | ``` 562 | 563 | `/dir/base/commit.partial` 564 | 565 | ```hbs 566 | ## {{authorName}} - {{commitTime}} 567 | [{{hashFull}}](https://server/{{hash}}) 568 | {{{message}}} 569 | ``` 570 | 571 | This is configured like: 572 | 573 | ```sh 574 | npx git-changelog-command-line -std \ 575 | --template-base-dir /dir/base \ 576 | --template /dir/changelog.hbs 577 | ``` 578 | 579 | If partials have a different ending, you can specify that with `--template-partial-suffix`. 580 | -------------------------------------------------------------------------------- /src/main/java/se/bjurr/gitchangelog/main/Main.java: -------------------------------------------------------------------------------- 1 | package se.bjurr.gitchangelog.main; 2 | 3 | import static se.bjurr.gitchangelog.api.GitChangelogApi.gitChangelogApiBuilder; 4 | import static se.bjurr.gitchangelog.api.GitChangelogApiConstants.DEFAULT_DATEFORMAT; 5 | import static se.bjurr.gitchangelog.internal.settings.Settings.defaultSettings; 6 | import static se.softhouse.jargo.Arguments.enumArgument; 7 | import static se.softhouse.jargo.Arguments.fileArgument; 8 | import static se.softhouse.jargo.Arguments.helpArgument; 9 | import static se.softhouse.jargo.Arguments.optionArgument; 10 | import static se.softhouse.jargo.Arguments.stringArgument; 11 | import static se.softhouse.jargo.CommandLineParser.withArguments; 12 | 13 | import com.google.gson.Gson; 14 | import com.google.gson.GsonBuilder; 15 | import com.google.gson.reflect.TypeToken; 16 | import java.io.File; 17 | import java.lang.reflect.Type; 18 | import java.nio.charset.Charset; 19 | import java.nio.charset.StandardCharsets; 20 | import java.nio.file.Files; 21 | import java.text.SimpleDateFormat; 22 | import java.util.Date; 23 | import java.util.HashMap; 24 | import java.util.List; 25 | import java.util.Map; 26 | import se.bjurr.gitchangelog.api.GitChangelogApi; 27 | import se.bjurr.gitchangelog.api.GitChangelogApiConstants; 28 | import se.bjurr.gitchangelog.api.InclusivenessStrategy; 29 | import se.bjurr.gitchangelog.internal.semantic.SemanticVersion; 30 | import se.bjurr.gitchangelog.internal.settings.Settings; 31 | import se.softhouse.jargo.Argument; 32 | import se.softhouse.jargo.ArgumentException; 33 | import se.softhouse.jargo.ParsedArguments; 34 | 35 | public class Main { 36 | private static final String PARAM_REGISTER_HANDLEBARS_HELPER = "-rhh"; 37 | private static final String PARAM_PRINT_HIGHEST_VERSION = "-phv"; 38 | private static final String PARAM_PRINT_HIGHEST_VERSION_TAG = "-phvt"; 39 | private static final String PARAM_PRINT_NEXT_VERSION = "-pnv"; 40 | private static final String PARAM_PRINT_CURRENT_VERSION = "-pcv"; 41 | private static final String PARAM_PATCH_VERSION_PATTERN = "-pavp"; 42 | private static final String PARAM_MINOR_VERSION_PATTERN = "-mivp"; 43 | private static final String PARAM_MAJOR_VERSION_PATTERN = "-mavp"; 44 | private static final String PARAM_PREPEND_TO_FILE = "-ptf"; 45 | public static final String PARAM_SETTINGS_FILE = "-sf"; 46 | public static final String PARAM_OUTPUT_FILE = "-of"; 47 | public static final String PARAM_OUTPUT_STDOUT = "-std"; 48 | public static final String PARAM_TEMPLATE = "-t"; 49 | public static final String PARAM_PREPEND_TEMPLATE = "-pt"; 50 | public static final String PARAM_TEMPLATE_BASE_DIR = "-tbd"; 51 | public static final String PARAM_TEMPLATE_PARTIAL_SUFFIX = "-tps"; 52 | public static final String PARAM_REPO = "-r"; 53 | public static final String PARAM_FROM_REF = "-fr"; 54 | public static final String PARAM_TO_REF = "-tr"; 55 | public static final String PARAM_FROM_REV = "-fre"; 56 | public static final String PARAM_FROM_REV_INCLUDE = "-frei"; 57 | public static final String PARAM_TO_REV = "-tre"; 58 | public static final String PARAM_TO_REV_INCLUDE = "-trei"; 59 | public static final String PARAM_FROM_COMMIT = "-fc"; 60 | public static final String PARAM_TO_COMMIT = "-tc"; 61 | public static final String PARAM_IGNORE_PATTERN = "-ip"; 62 | public static final String PARAM_IGNORE_OLDER_PATTERN = "-iot"; 63 | public static final String PARAM_IGNORE_TAG_PATTERN = "-itp"; 64 | public static final String PARAM_JIRA_SERVER = "-js"; 65 | public static final String PARAM_JIRA_ISSUE_PATTERN = "-jp"; 66 | public static final String PARAM_JIRA_USERNAME = "-ju"; 67 | public static final String PARAM_JIRA_PASSWORD = "-jpw"; 68 | public static final String PARAM_JIRA_BASIC_AUTH = "-jba"; 69 | public static final String PARAM_JIRA_BEARER = "-jbt"; 70 | public static final String PARAM_JIRA_ADDITIONAL_FIELD = "-jaf"; 71 | public static final String PARAM_REDMINE_SERVER = "-rms"; 72 | public static final String PARAM_REDMINE_ISSUE_PATTERN = "-rmp"; 73 | public static final String PARAM_REDMINE_USERNAME = "-rmu"; 74 | public static final String PARAM_REDMINE_PASSWORD = "-rmpw"; 75 | public static final String PARAM_REDMINE_TOKEN = "-rmt"; 76 | public static final String PARAM_CUSTOM_ISSUE_NAME = "-cn"; 77 | public static final String PARAM_CUSTOM_ISSUE_PATTERN = "-cp"; 78 | public static final String PARAM_CUSTOM_ISSUE_LINK = "-cl"; 79 | public static final String PARAM_CUSTOM_ISSUE_TITLE = "-ct"; 80 | public static final String PARAM_UNTAGGED_TAG_NAME = "-ut"; 81 | public static final String PARAM_TIMEZONE = "-tz"; 82 | public static final String PARAM_DATEFORMAT = "-df"; 83 | public static final String PARAM_NOISSUE = "-ni"; 84 | public static final String PARAM_IGNORE_NOISSUE = "-ini"; 85 | public static final String PARAM_READABLETAGNAME = "-rt"; 86 | public static final String PARAM_REMOVEISSUE = "-ri"; 87 | public static final String PARAM_GITHUBAPI = "-gapi"; 88 | public static final String PARAM_GITHUBTOKEN = "-gtok"; 89 | public static final String PARAM_EXTENDED_VARIABLES = "-ex"; 90 | public static final String PARAM_EXTENDED_HEADERS = "-eh"; 91 | public static final String PARAM_TEMPLATE_CONTENT = "-tec"; 92 | public static final String PARAM_GITLABTOKEN = "-glt"; 93 | public static final String PARAM_GITLABSERVER = "-gls"; 94 | public static final String PARAM_GITLABPROJECTNAME = "-glpn"; 95 | public static final String PARAM_GITLABISSUEPATTERN = "-glp"; 96 | 97 | private static String systemOutPrintln; 98 | private static boolean recordSystemOutPrintln; 99 | 100 | public static void main(final String args[]) throws Exception { 101 | final Settings defaultSettings = defaultSettings(); 102 | final Argument helpArgument = helpArgument("-h", "--help"); 103 | 104 | final Argument settingsArgument = 105 | stringArgument(PARAM_SETTINGS_FILE, "--settings-file") // 106 | .description("Use settings from file.") // 107 | .defaultValue(null) // 108 | .build(); 109 | final Argument outputStdoutArgument = 110 | optionArgument(PARAM_OUTPUT_STDOUT, "--stdout") // 111 | .description("Print builder to .") // 112 | .build(); 113 | final Argument outputFileArgument = 114 | stringArgument(PARAM_OUTPUT_FILE, "--output-file") // 115 | .description("Write output to file.") // 116 | .build(); 117 | 118 | final Argument templatePathArgument = 119 | stringArgument(PARAM_TEMPLATE, "--template") // 120 | .description("Template to use. A default template will be used if not specified.") // 121 | .defaultValue(defaultSettings.getTemplatePath()) // 122 | .build(); 123 | 124 | final Argument prependTemplatePathArgument = 125 | stringArgument(PARAM_PREPEND_TEMPLATE, "--prepend-template") // 126 | .description( 127 | "Template to use when prepending. A default template will be used if not specified.") // 128 | .defaultValue(defaultSettings.getPrependTemplatePath()) // 129 | .build(); 130 | 131 | final Argument templateBaseDirArgument = 132 | stringArgument(PARAM_TEMPLATE_BASE_DIR, "--template-base-dir") // 133 | .description("Base dir of templates.") // 134 | .defaultValue(defaultSettings.getTemplateBaseDir()) // 135 | .build(); 136 | 137 | final Argument templatePartialSuffixArgument = 138 | stringArgument(PARAM_TEMPLATE_PARTIAL_SUFFIX, "--template-partial-suffix") // 139 | .description("File ending for partials.") // 140 | .defaultValue(defaultSettings.getTemplateSuffix()) // 141 | .build(); 142 | 143 | final Argument untaggedTagNameArgument = 144 | stringArgument(PARAM_UNTAGGED_TAG_NAME, "--untagged-name") // 145 | .description( 146 | "When listing commits per tag, this will by the name of a virtual tag that contains commits not available in any git tag.") // 147 | .defaultValue(defaultSettings.getUntaggedName()) // 148 | .build(); 149 | 150 | final Argument fromRepoArgument = 151 | stringArgument(PARAM_REPO, "--repo") // 152 | .description("Repository.") // 153 | .defaultValue(defaultSettings.getFromRepo()) // 154 | .build(); 155 | final Argument fromRevArgument = 156 | stringArgument(PARAM_FROM_REV, "--from-revision") // 157 | .description("From revision.") // 158 | .defaultValue(defaultSettings.getFromRevision().orElse(null)) // 159 | .build(); 160 | final Argument fromRevInclusivenessStrategyArgument = 161 | enumArgument( 162 | InclusivenessStrategy.class, 163 | PARAM_FROM_REV_INCLUDE, 164 | "--from-revision-inclusiveness") // 165 | .description("Include, or exclude, specified revision.") // 166 | .defaultValue(defaultSettings.getFromRevisionStrategy()) // 167 | .build(); 168 | final Argument toRevArgument = 169 | stringArgument(PARAM_TO_REV, "--to-revision") // 170 | .description("To revision.") // 171 | .defaultValue(defaultSettings.getToRevision().orElse(null)) // 172 | .build(); 173 | final Argument toRevInclusivenessStrategyArgument = 174 | enumArgument( 175 | InclusivenessStrategy.class, 176 | PARAM_TO_REV_INCLUDE, 177 | "--to-revision-inclusiveness") // 178 | .description("Include, or exclude, specified revision.") // 179 | .defaultValue(defaultSettings.getFromRevisionStrategy()) // 180 | .build(); 181 | final Argument fromRefArgument = 182 | stringArgument(PARAM_FROM_REF, "--from-ref") // 183 | .description("From ref.") // 184 | .defaultValue(defaultSettings.getFromRevision().orElse(null)) // 185 | .hideFromUsage() // 186 | .build(); 187 | final Argument toRefArgument = 188 | stringArgument(PARAM_TO_REF, "--to-ref") // 189 | .description("To ref.") // 190 | .defaultValue(defaultSettings.getToRevision().orElse(null)) // 191 | .hideFromUsage() // 192 | .build(); 193 | final Argument fromCommitArgument = 194 | stringArgument(PARAM_FROM_COMMIT, "--from-commit") // 195 | .description("From commit.") // 196 | .defaultValue(defaultSettings.getFromRevision().orElse(null)) // 197 | .hideFromUsage() // 198 | .build(); 199 | final Argument toCommitArgument = 200 | stringArgument(PARAM_TO_COMMIT, "--to-commit") // 201 | .description("To commit.") // 202 | .defaultValue(defaultSettings.getToRevision().orElse(null)) // 203 | .hideFromUsage() // 204 | .build(); 205 | 206 | final Argument ignoreCommitsIfMessageMatchesArgument = 207 | stringArgument(PARAM_IGNORE_PATTERN, "--ignore-pattern") // 208 | .description("Ignore commits where pattern matches message.") // 209 | .defaultValue(defaultSettings.getIgnoreCommitsIfMessageMatches()) // 210 | .build(); 211 | 212 | final Argument ignoreCommitsOlderThanArgument = 213 | stringArgument(PARAM_IGNORE_OLDER_PATTERN, "--ignore-older-than") // 214 | .description("Ignore commits older than " + DEFAULT_DATEFORMAT + ".") // 215 | .build(); 216 | 217 | final Argument ignoreTagsIfNameMatchesArgument = 218 | stringArgument(PARAM_IGNORE_TAG_PATTERN, "--ignore-tag-pattern") // 219 | .description( 220 | "Ignore tags that matches regular expression. Can be used to ignore release candidates and only include actual releases.") // 221 | .defaultValue(defaultSettings.getIgnoreTagsIfNameMatches().orElse(null)) // 222 | .build(); 223 | 224 | final Argument jiraServerArgument = 225 | stringArgument(PARAM_JIRA_SERVER, "--jiraServer", "--jira-server") // 226 | .description( 227 | "Jira server. When a Jira server is given, the title of the Jira issues can be used in the changelog.") // 228 | .defaultValue(defaultSettings.getJiraServer().orElse(null)) // 229 | .build(); 230 | final Argument jiraIssuePatternArgument = 231 | stringArgument(PARAM_JIRA_ISSUE_PATTERN, "--jira-pattern") // 232 | .description("Jira issue pattern.") // 233 | .defaultValue(defaultSettings.getJiraIssuePattern()) // 234 | .build(); 235 | final Argument jiraUsernamePatternArgument = 236 | stringArgument(PARAM_JIRA_USERNAME, "--jira-username") // 237 | .description("Optional username to authenticate with Jira.") // 238 | .defaultValue(defaultSettings.getJiraIssuePattern()) // 239 | .build(); 240 | final Argument jiraPasswordPatternArgument = 241 | stringArgument(PARAM_JIRA_PASSWORD, "--jira-password") // 242 | .description("Optional password to authenticate with Jira.") // 243 | .defaultValue(defaultSettings.getJiraIssuePattern()) // 244 | .build(); 245 | final Argument jiraBasicAuthStringPatternArgument = 246 | stringArgument(PARAM_JIRA_BASIC_AUTH, "--jira-basic-auth") // 247 | .description("Optional token to authenticate with Jira.") // 248 | .defaultValue(defaultSettings.getJiraIssuePattern()) // 249 | .build(); 250 | final Argument jiraBearerArgument = 251 | stringArgument(PARAM_JIRA_BEARER, "--jira-bearer") // 252 | .description("Optional token to authenticate with Jira.") // 253 | .defaultValue(defaultSettings.getJiraIssuePattern()) // 254 | .build(); 255 | final Argument> jiraAdditionalFieldArgument = 256 | stringArgument(PARAM_JIRA_ADDITIONAL_FIELD, "--jira-additional-field") // 257 | .repeated() 258 | .description( 259 | "Adds an additional field for Jira. When configured, we will return from Jira the result of this field, if it exists.") // 260 | .build(); 261 | 262 | final Argument redmineServerArgument = 263 | stringArgument(PARAM_REDMINE_SERVER, "--redmine-server") // 264 | .description( 265 | "Redmine server. When a Redmine server is given, the title of the Redmine issues can be used in the changelog.") // 266 | .defaultValue(defaultSettings.getRedmineServer().orElse(null)) // 267 | .build(); 268 | final Argument redmineIssuePatternArgument = 269 | stringArgument(PARAM_REDMINE_ISSUE_PATTERN, "--redmine-pattern") // 270 | .description("Redmine issue pattern.") // 271 | .defaultValue(defaultSettings.getRedmineIssuePattern()) // 272 | .build(); 273 | final Argument redmineUsernameArgument = 274 | stringArgument(PARAM_REDMINE_USERNAME, "--redmine-username") // 275 | .description("Optional username to authenticate with Redmine.") // 276 | .build(); 277 | final Argument redminePasswordArgument = 278 | stringArgument(PARAM_REDMINE_PASSWORD, "--redmine-password") // 279 | .description("Optional password to authenticate with Redmine.") // 280 | .build(); 281 | final Argument redmineTokenArgument = 282 | stringArgument(PARAM_REDMINE_TOKEN, "--redmine-token") // 283 | .description("Optional token/api-key to authenticate with Redmine.") // 284 | .build(); 285 | 286 | final Argument customIssueNameArgument = 287 | stringArgument(PARAM_CUSTOM_ISSUE_NAME, "--custom-issue-name") // 288 | .description("Custom issue name.") // 289 | .defaultValue(null) // 290 | .build(); 291 | final Argument customIssuePatternArgument = 292 | stringArgument(PARAM_CUSTOM_ISSUE_PATTERN, "--custom-issue-pattern") // 293 | .description("Custom issue pattern.") // 294 | .defaultValue(null) // 295 | .build(); 296 | final Argument customIssueLinkArgument = 297 | stringArgument(PARAM_CUSTOM_ISSUE_LINK, "--custom-issue-link") // 298 | .description( 299 | "Custom issue link. Supports variables like ${PATTERN_GROUP_1} to inject variables from pattern.") // 300 | .defaultValue(null) // 301 | .build(); 302 | final Argument customIssueTitleArgument = 303 | stringArgument(PARAM_CUSTOM_ISSUE_TITLE, "--custom-issue-title") // 304 | .description( 305 | "Custom issue title. Supports variables like ${PATTERN_GROUP_1} to inject variables from pattern.") // 306 | .defaultValue(null) // 307 | .build(); 308 | 309 | final Argument timeZoneArgument = 310 | stringArgument(PARAM_TIMEZONE, "--time-zone") // 311 | .description("TimeZone to use when printing dates.") // 312 | .defaultValue(defaultSettings.getTimeZone()) // 313 | .build(); 314 | final Argument dateFormatArgument = 315 | stringArgument(PARAM_DATEFORMAT, "--date-format") // 316 | .description("Format to use when printing dates.") // 317 | .defaultValue(defaultSettings.getDateFormat()) // 318 | .build(); 319 | final Argument noIssueArgument = 320 | stringArgument(PARAM_NOISSUE, "--no-issue-name") // 321 | .description( 322 | "Name of virtual issue that contains commits that has no issue associated.") // 323 | .defaultValue(defaultSettings.getNoIssueName()) // 324 | .build(); 325 | final Argument ignoreCommitsWithoutIssueArgument = 326 | optionArgument(PARAM_IGNORE_NOISSUE, "--ignore-commits-without-issue") // 327 | .description("Ignore commits that is not included in any issue.") // 328 | .build(); 329 | final Argument readableTagNameArgument = 330 | stringArgument(PARAM_READABLETAGNAME, "--readable-tag-name") // 331 | .description("Pattern to extract readable part of tag.") // 332 | .defaultValue(defaultSettings.getReadableTagName()) // 333 | .build(); 334 | final Argument removeIssueFromMessageArgument = 335 | optionArgument(PARAM_REMOVEISSUE, "--remove-issue-from-message") // 336 | .description("Dont print any issues in the messages of commits.") // 337 | .build(); 338 | 339 | final Argument gitHubApiArgument = 340 | stringArgument(PARAM_GITHUBAPI, "--github-api") // 341 | .description( 342 | "GitHub API. Like: https://api.github.com/repos/tomasbjerre/git-changelog-command-line/") // 343 | .defaultValue("") // 344 | .build(); 345 | final Argument gitHubTokenArgument = 346 | stringArgument(PARAM_GITHUBTOKEN, "--github-token") // 347 | .description( 348 | "GitHub API OAuth2 token. You can get it from: curl -u 'yourgithubuser' -d '{\"note\":\"Git Changelog Lib\"}' https://api.github.com/authorizations") // 349 | .defaultValue("") // 350 | .build(); 351 | 352 | final Argument extendedVariablesArgument = 353 | stringArgument(PARAM_EXTENDED_VARIABLES, "--extended-variables") // 354 | .description( 355 | "Extended variables that will be available as {{extended.*}}. " 356 | + PARAM_EXTENDED_VARIABLES 357 | + " \"{\\\"var1\\\": \\\"val1\\\"}\" will print out \"val1\" for a template like \"{{extended.var1}}\"") // 358 | .defaultValue("") // 359 | .build(); 360 | 361 | final Argument> extendedHeadersArgument = 362 | stringArgument(PARAM_EXTENDED_HEADERS, "--extended-headers") // 363 | .repeated() 364 | .description( 365 | "Extended headers that will send when access JIRA. e.g. " 366 | + PARAM_EXTENDED_HEADERS 367 | + " CF-Access-Client-ID:abcde12345xyz.access") // 368 | .build(); 369 | 370 | final Argument templateContentArgument = 371 | stringArgument(PARAM_TEMPLATE_CONTENT, "--template-content") // 372 | .description("String to use as template.") // 373 | .defaultValue("") // 374 | .build(); 375 | 376 | final Argument gitLabTokenArgument = 377 | stringArgument(PARAM_GITLABTOKEN, "--gitlab-token") // 378 | .description("GitLab API token.") // 379 | .defaultValue("") // 380 | .build(); 381 | final Argument gitLabServerArgument = 382 | stringArgument(PARAM_GITLABSERVER, "--gitlab-server") // 383 | .description("GitLab server, like https://gitlab.com/.") // 384 | .defaultValue("") // 385 | .build(); 386 | final Argument gitLabProjectNameArgument = 387 | stringArgument(PARAM_GITLABPROJECTNAME, "--gitlab-project-name") // 388 | .description("GitLab project name.") // 389 | .defaultValue("") // 390 | .build(); 391 | final Argument gitLabProjectIssuePattern = 392 | stringArgument(PARAM_GITLABISSUEPATTERN, "--gitlab-issue-pattern") // 393 | .description("GitLab issue pattern.") // 394 | .defaultValue("") // 395 | .build(); 396 | 397 | final Argument printHighestVersion = 398 | optionArgument(PARAM_PRINT_HIGHEST_VERSION, "--print-highest-version") // 399 | .description("Print the highest version, determined by tags in repo, and exit.") // 400 | .defaultValue(false) 401 | .build(); 402 | 403 | final Argument printHighestVersionTag = 404 | optionArgument(PARAM_PRINT_HIGHEST_VERSION_TAG, "--print-highest-version-tag") // 405 | .description("Print the tag corresponding to highest version, and exit.") // 406 | .defaultValue(false) 407 | .build(); 408 | 409 | final Argument printNextVersion = 410 | optionArgument(PARAM_PRINT_NEXT_VERSION, "--print-next-version") // 411 | .description( 412 | "Print the next version, determined by commits since highest version, and exit.") // 413 | .defaultValue(false) 414 | .build(); 415 | 416 | final Argument printCurrentVersion = 417 | optionArgument(PARAM_PRINT_CURRENT_VERSION, "--print-current-version") // 418 | .description( 419 | "Like --print-next-version unless the current commit is tagged with a version, if so it will print that version.") // 420 | .defaultValue(false) 421 | .build(); 422 | 423 | final Argument registerHandlebarsHelper = 424 | stringArgument(PARAM_REGISTER_HANDLEBARS_HELPER, "--register-handlebars-helper") // 425 | .description( 426 | "Handlebar helpers, https://handlebarsjs.com/guide/block-helpers.html, to register and use in given template.") // 427 | .defaultValue("") 428 | .build(); 429 | 430 | final Argument handlebarsHelperFile = 431 | fileArgument("-handlebars-helper-file", "-hhf") 432 | .description("Can be used to add extra helpers.") 433 | .build(); 434 | 435 | final Argument prependToFile = 436 | stringArgument(PARAM_PREPEND_TO_FILE, "--prepend-to-file") // 437 | .description("Add the changelog to top of given file.") // 438 | .defaultValue(null) 439 | .build(); 440 | 441 | final Argument majorVersionPattern = 442 | stringArgument(PARAM_MAJOR_VERSION_PATTERN, "--major-version-pattern") // 443 | .description( 444 | "Commit messages matching this, optional, regular expression will trigger new major version.") // 445 | .defaultValue(null) 446 | .build(); 447 | 448 | final Argument minorVersionPattern = 449 | stringArgument(PARAM_MINOR_VERSION_PATTERN, "--minor-version-pattern") // 450 | .description( 451 | "Commit messages matching this, optional, regular expression will trigger new minor version.") // 452 | .defaultValue(GitChangelogApiConstants.DEFAULT_MINOR_PATTERN) 453 | .build(); 454 | 455 | final Argument patchVersionPattern = 456 | stringArgument(PARAM_PATCH_VERSION_PATTERN, "--patch-version-pattern") // 457 | .description( 458 | "Commit messages matching this, optional, regular expression will trigger new patch version.") // 459 | .defaultValue(GitChangelogApiConstants.DEFAULT_PATCH_PATTERN) 460 | .build(); 461 | 462 | final Argument showDebugInfo = 463 | optionArgument("--show-debug-info") 464 | .description( 465 | "Please run your command with this parameter and supply output when reporting bugs.") 466 | .build(); 467 | 468 | final Argument jiraEnabledArgument = 469 | optionArgument("-je", "--jira-enabled") // 470 | .description("Enable parsing for Jira issues.") // 471 | .build(); 472 | 473 | final Argument githubEnabledArgument = 474 | optionArgument("-ge", "--github-enabled") // 475 | .description("Enable parsing for GitHub issues.") // 476 | .build(); 477 | 478 | final Argument gitlabEnabledArgument = 479 | optionArgument("-gl", "--gitlab-enabled") // 480 | .description("Enable parsing for GitLab issues.") // 481 | .build(); 482 | 483 | final Argument redmineEnabledArgument = 484 | optionArgument("-re", "--redmine-enabled") // 485 | .description("Enable parsing for Redmine issues.") // 486 | .build(); 487 | 488 | final Argument useIntegrationsArgument = 489 | optionArgument("-ui", "--use-integrations") // 490 | .description("Use integrations to get more details on commits.") // 491 | .build(); 492 | 493 | final Argument encodingArgument = 494 | stringArgument("-en", "--encoding") // 495 | .description("Encoding to use when writing content.") // 496 | .defaultValue(StandardCharsets.UTF_8.name()) 497 | .build(); 498 | 499 | final Argument> pathsArgument = 500 | stringArgument("-pf", "--path-filters") // 501 | .repeated() 502 | .description("Paths on the filesystem to filter on.") // 503 | .defaultValue(defaultSettings.getPathFilters()) 504 | .build(); 505 | 506 | try { 507 | final ParsedArguments arg = 508 | withArguments( 509 | helpArgument, 510 | settingsArgument, 511 | outputStdoutArgument, 512 | outputFileArgument, 513 | templatePathArgument, 514 | prependTemplatePathArgument, 515 | templateBaseDirArgument, 516 | templatePartialSuffixArgument, 517 | fromCommitArgument, 518 | fromRevArgument, 519 | toRevArgument, 520 | toRevInclusivenessStrategyArgument, 521 | fromRevInclusivenessStrategyArgument, 522 | fromRefArgument, 523 | fromRepoArgument, 524 | toCommitArgument, 525 | toRefArgument, 526 | untaggedTagNameArgument, 527 | jiraIssuePatternArgument, 528 | jiraServerArgument, 529 | redmineIssuePatternArgument, 530 | redmineServerArgument, 531 | ignoreCommitsIfMessageMatchesArgument, 532 | ignoreCommitsOlderThanArgument, 533 | customIssueLinkArgument, 534 | customIssueTitleArgument, 535 | customIssueNameArgument, 536 | customIssuePatternArgument, 537 | timeZoneArgument, 538 | dateFormatArgument, 539 | noIssueArgument, 540 | readableTagNameArgument, 541 | removeIssueFromMessageArgument, 542 | gitHubApiArgument, 543 | jiraUsernamePatternArgument, 544 | jiraPasswordPatternArgument, 545 | jiraBasicAuthStringPatternArgument, 546 | jiraBearerArgument, 547 | jiraAdditionalFieldArgument, 548 | redmineUsernameArgument, 549 | redminePasswordArgument, 550 | redmineTokenArgument, 551 | extendedVariablesArgument, 552 | extendedHeadersArgument, 553 | templateContentArgument, 554 | gitHubTokenArgument, 555 | ignoreCommitsWithoutIssueArgument, 556 | ignoreTagsIfNameMatchesArgument, 557 | gitLabTokenArgument, 558 | gitLabServerArgument, 559 | gitLabProjectNameArgument, 560 | gitLabProjectIssuePattern, 561 | printHighestVersion, 562 | printHighestVersionTag, 563 | printNextVersion, 564 | printCurrentVersion, 565 | registerHandlebarsHelper, 566 | prependToFile, 567 | majorVersionPattern, 568 | minorVersionPattern, 569 | patchVersionPattern, 570 | showDebugInfo, 571 | handlebarsHelperFile, 572 | jiraEnabledArgument, 573 | githubEnabledArgument, 574 | gitlabEnabledArgument, 575 | redmineEnabledArgument, 576 | useIntegrationsArgument, 577 | encodingArgument, 578 | pathsArgument) // 579 | .parse(args); 580 | 581 | final GitChangelogApi changelogApiBuilder = 582 | gitChangelogApiBuilder() 583 | .withUseIntegrations(arg.wasGiven(useIntegrationsArgument)) 584 | .withJiraEnabled(arg.wasGiven(jiraEnabledArgument)) 585 | .withRedmineEnabled(arg.wasGiven(redmineEnabledArgument)) 586 | .withGitHubEnabled(arg.wasGiven(githubEnabledArgument)) 587 | .withGitLabEnabled(arg.wasGiven(gitlabEnabledArgument)) 588 | .withEncoding(Charset.forName(arg.get(encodingArgument))) 589 | .withPathFilters(arg.get(pathsArgument).toArray(new String[0])); 590 | 591 | if (!arg.get(registerHandlebarsHelper).trim().isEmpty()) { 592 | changelogApiBuilder.withHandlebarsHelper(arg.get(registerHandlebarsHelper)); 593 | } 594 | 595 | if (arg.wasGiven(handlebarsHelperFile)) { 596 | final byte[] content = Files.readAllBytes(arg.get(handlebarsHelperFile).toPath()); 597 | final String contentString = new String(content, StandardCharsets.UTF_8); 598 | changelogApiBuilder.withHandlebarsHelper(contentString); 599 | } 600 | 601 | if (arg.wasGiven(settingsArgument)) { 602 | changelogApiBuilder.withSettings(new File(arg.get(settingsArgument)).toURI().toURL()); 603 | } 604 | 605 | if (arg.wasGiven(removeIssueFromMessageArgument)) { 606 | changelogApiBuilder.withRemoveIssueFromMessageArgument(true); 607 | } 608 | if (arg.wasGiven(ignoreCommitsWithoutIssueArgument)) { 609 | changelogApiBuilder.withIgnoreCommitsWithoutIssue(true); 610 | } 611 | 612 | if (arg.wasGiven(extendedVariablesArgument)) { 613 | final String jsonString = arg.get(extendedVariablesArgument); 614 | final Gson gson = new Gson(); 615 | final Type type = new TypeToken>() {}.getType(); 616 | final Object jsonObject = gson.fromJson(jsonString, type); 617 | final Map extendedVariables = new HashMap<>(); 618 | extendedVariables.put("extended", jsonObject); 619 | changelogApiBuilder.withExtendedVariables(extendedVariables); 620 | } 621 | 622 | if (arg.wasGiven(extendedHeadersArgument)) { 623 | final List extendedHeaders = arg.get(extendedHeadersArgument); 624 | final Map headers = new HashMap<>(); 625 | for (final String extendedHeader : extendedHeaders) { 626 | final String[] splitted = extendedHeader.split(":"); 627 | if (splitted.length != 2) { 628 | throw new RuntimeException("Headers should be on format \"headername:headervalue\""); 629 | } 630 | final String key = splitted[0].trim(); 631 | final String value = splitted[1].trim(); 632 | headers.put(key, value); 633 | } 634 | changelogApiBuilder.withExtendedHeaders(headers); 635 | } 636 | 637 | if (arg.wasGiven(templateContentArgument)) { 638 | changelogApiBuilder.withTemplateContent(arg.get(templateContentArgument)); 639 | } 640 | 641 | if (arg.wasGiven(templateBaseDirArgument)) { 642 | changelogApiBuilder.withTemplateBaseDir(arg.get(templateBaseDirArgument)); 643 | } 644 | 645 | if (arg.wasGiven(templatePartialSuffixArgument)) { 646 | changelogApiBuilder.withTemplateSuffix(arg.get(templatePartialSuffixArgument)); 647 | } 648 | 649 | if (arg.wasGiven(fromRepoArgument)) { 650 | changelogApiBuilder.withFromRepo(arg.get(fromRepoArgument)); 651 | } 652 | if (arg.wasGiven(untaggedTagNameArgument)) { 653 | changelogApiBuilder.withUntaggedName(arg.get(untaggedTagNameArgument)); 654 | } 655 | if (arg.wasGiven(ignoreCommitsIfMessageMatchesArgument)) { 656 | changelogApiBuilder.withIgnoreCommitsWithMessage( 657 | arg.get(ignoreCommitsIfMessageMatchesArgument)); 658 | } 659 | if (arg.wasGiven(ignoreCommitsOlderThanArgument)) { 660 | final Date date = 661 | new SimpleDateFormat(DEFAULT_DATEFORMAT) // NOPMD 662 | .parse(arg.get(ignoreCommitsOlderThanArgument)); 663 | changelogApiBuilder.withIgnoreCommitsOlderThan(date); 664 | } 665 | if (arg.wasGiven(ignoreTagsIfNameMatchesArgument)) { 666 | changelogApiBuilder.withIgnoreTagsIfNameMatches(arg.get(ignoreTagsIfNameMatchesArgument)); 667 | } 668 | if (arg.wasGiven(templatePathArgument)) { 669 | changelogApiBuilder.withTemplatePath(arg.get(templatePathArgument)); 670 | } 671 | if (arg.wasGiven(prependTemplatePathArgument)) { 672 | changelogApiBuilder.withPrependTemplatePath(arg.get(prependTemplatePathArgument)); 673 | } 674 | if (arg.wasGiven(jiraIssuePatternArgument)) { 675 | changelogApiBuilder.withJiraIssuePattern(arg.get(jiraIssuePatternArgument)); 676 | } 677 | if (arg.wasGiven(jiraServerArgument)) { 678 | changelogApiBuilder.withJiraServer(arg.get(jiraServerArgument)); 679 | } 680 | if (arg.wasGiven(jiraUsernamePatternArgument)) { 681 | changelogApiBuilder.withJiraUsername(arg.get(jiraUsernamePatternArgument)); 682 | } 683 | if (arg.wasGiven(jiraPasswordPatternArgument)) { 684 | changelogApiBuilder.withJiraPassword(arg.get(jiraPasswordPatternArgument)); 685 | } 686 | if (arg.wasGiven(jiraBasicAuthStringPatternArgument)) { 687 | changelogApiBuilder.withJiraBasicAuthString(arg.get(jiraBasicAuthStringPatternArgument)); 688 | } 689 | if (arg.wasGiven(jiraBearerArgument)) { 690 | changelogApiBuilder.withJiraBearer(arg.get(jiraBearerArgument)); 691 | } 692 | if (arg.wasGiven(jiraAdditionalFieldArgument)) { 693 | arg.get(jiraAdditionalFieldArgument) 694 | .forEach(changelogApiBuilder::withJiraIssueAdditionalField); 695 | } 696 | if (arg.wasGiven(redmineIssuePatternArgument)) { 697 | changelogApiBuilder.withRedmineIssuePattern(arg.get(redmineIssuePatternArgument)); 698 | } 699 | if (arg.wasGiven(redmineServerArgument)) { 700 | changelogApiBuilder.withRedmineServer(arg.get(redmineServerArgument)); 701 | } 702 | if (arg.wasGiven(redmineUsernameArgument)) { 703 | changelogApiBuilder.withRedmineUsername(arg.get(redmineUsernameArgument)); 704 | } 705 | if (arg.wasGiven(redminePasswordArgument)) { 706 | changelogApiBuilder.withRedminePassword(arg.get(redminePasswordArgument)); 707 | } 708 | if (arg.wasGiven(redmineTokenArgument)) { 709 | changelogApiBuilder.withRedmineToken(arg.get(redmineTokenArgument)); 710 | } 711 | if (arg.wasGiven(timeZoneArgument)) { 712 | changelogApiBuilder.withTimeZone(arg.get(timeZoneArgument)); 713 | } 714 | if (arg.wasGiven(dateFormatArgument)) { 715 | changelogApiBuilder.withDateFormat(arg.get(dateFormatArgument)); 716 | } 717 | if (arg.wasGiven(noIssueArgument)) { 718 | changelogApiBuilder.withNoIssueName(arg.get(noIssueArgument)); 719 | } 720 | if (arg.wasGiven(readableTagNameArgument)) { 721 | changelogApiBuilder.withReadableTagName(arg.get(readableTagNameArgument)); 722 | } 723 | 724 | if (arg.wasGiven(fromRevArgument)) { 725 | if (arg.wasGiven(fromRevInclusivenessStrategyArgument)) { 726 | changelogApiBuilder.withFromRevision( 727 | arg.get(fromRevArgument), arg.get(fromRevInclusivenessStrategyArgument)); 728 | } else { 729 | changelogApiBuilder.withFromRevision(arg.get(fromRevArgument)); 730 | } 731 | } 732 | if (arg.wasGiven(toRevArgument)) { 733 | if (arg.wasGiven(toRevInclusivenessStrategyArgument)) { 734 | changelogApiBuilder.withToRevision( 735 | arg.get(toRevArgument), arg.get(toRevInclusivenessStrategyArgument)); 736 | } else { 737 | changelogApiBuilder.withToRevision(arg.get(toRevArgument)); 738 | } 739 | } 740 | if (arg.wasGiven(fromCommitArgument)) { 741 | changelogApiBuilder.withFromCommit(arg.get(fromCommitArgument)); 742 | } 743 | if (arg.wasGiven(fromRefArgument)) { 744 | changelogApiBuilder.withFromRef(arg.get(fromRefArgument)); 745 | } 746 | if (arg.wasGiven(toCommitArgument)) { 747 | changelogApiBuilder.withToCommit(arg.get(toCommitArgument)); 748 | } 749 | if (arg.wasGiven(toRefArgument)) { 750 | changelogApiBuilder.withToRef(arg.get(toRefArgument)); 751 | } 752 | if (arg.wasGiven(gitHubApiArgument)) { 753 | changelogApiBuilder.withGitHubApi(arg.get(gitHubApiArgument)); 754 | } 755 | if (arg.wasGiven(gitHubTokenArgument)) { 756 | changelogApiBuilder.withGitHubToken(arg.get(gitHubTokenArgument)); 757 | } 758 | 759 | if (arg.wasGiven(gitLabServerArgument)) { 760 | changelogApiBuilder.withGitLabServer(arg.get(gitLabServerArgument)); 761 | } 762 | if (arg.wasGiven(gitLabProjectNameArgument)) { 763 | changelogApiBuilder.withGitLabProjectName(arg.get(gitLabProjectNameArgument)); 764 | } 765 | if (arg.wasGiven(gitLabTokenArgument)) { 766 | changelogApiBuilder.withGitLabToken(arg.get(gitLabTokenArgument)); 767 | } 768 | if (arg.wasGiven(gitLabProjectIssuePattern)) { 769 | changelogApiBuilder.withGitLabIssuePattern(arg.get(gitLabProjectIssuePattern)); 770 | } 771 | 772 | if ( // 773 | arg.wasGiven(customIssueNameArgument) 774 | && // 775 | arg.wasGiven(customIssuePatternArgument)) { 776 | String title = null; 777 | if (arg.wasGiven(customIssueTitleArgument)) { 778 | title = arg.get(customIssueTitleArgument); 779 | } 780 | String link = null; 781 | if (arg.wasGiven(customIssueLinkArgument)) { 782 | link = arg.get(customIssueLinkArgument); 783 | } 784 | changelogApiBuilder.withCustomIssue( // 785 | arg.get(customIssueNameArgument), // 786 | arg.get(customIssuePatternArgument), // 787 | link, // 788 | title); 789 | } 790 | 791 | checkArgument( // 792 | arg.wasGiven(outputStdoutArgument) 793 | || arg.wasGiven(outputFileArgument) 794 | || arg.wasGiven(prependToFile) 795 | || arg.wasGiven(printHighestVersion) 796 | || arg.wasGiven(printHighestVersionTag) 797 | || arg.wasGiven(printNextVersion) 798 | || arg.wasGiven(printCurrentVersion), // 799 | "You must supply an output, " 800 | + PARAM_OUTPUT_FILE 801 | + " , " 802 | + PARAM_OUTPUT_STDOUT 803 | + ", " 804 | + PARAM_PREPEND_TO_FILE 805 | + " , " 806 | + PARAM_PRINT_HIGHEST_VERSION 807 | + ", " 808 | + PARAM_PRINT_NEXT_VERSION 809 | + ", " 810 | + PARAM_PRINT_CURRENT_VERSION); 811 | 812 | if (arg.wasGiven(outputStdoutArgument)) { 813 | systemOutPrintln(changelogApiBuilder.render()); 814 | } 815 | 816 | if (arg.wasGiven(outputFileArgument)) { 817 | final String filePath = arg.get(outputFileArgument); 818 | changelogApiBuilder.toFile(new File(filePath)); 819 | } 820 | 821 | if (arg.wasGiven(majorVersionPattern)) { 822 | final String major = arg.get(majorVersionPattern); 823 | changelogApiBuilder.withSemanticMajorVersionPattern(major); 824 | } 825 | 826 | if (arg.wasGiven(minorVersionPattern)) { 827 | final String minor = arg.get(minorVersionPattern); 828 | changelogApiBuilder.withSemanticMinorVersionPattern(minor); 829 | } 830 | 831 | if (arg.wasGiven(patchVersionPattern)) { 832 | final String patch = arg.get(patchVersionPattern); 833 | changelogApiBuilder.withSemanticPatchVersionPattern(patch); 834 | } 835 | 836 | if (arg.wasGiven(prependToFile)) { 837 | final String filePath = arg.get(prependToFile); 838 | changelogApiBuilder.prependToFile(new File(filePath)); 839 | } 840 | 841 | if (arg.wasGiven(showDebugInfo)) { 842 | System.out.println( // NOPMD 843 | "Settings:\n" 844 | + new GsonBuilder() 845 | .setPrettyPrinting() 846 | .create() 847 | .toJson(changelogApiBuilder.getSettings())); 848 | System.out.println( // NOPMD 849 | "Template:\n\n" + changelogApiBuilder.getTemplateString() + "\n\n"); // NOPMD 850 | final byte[] template = 851 | changelogApiBuilder.getTemplateString().getBytes(StandardCharsets.UTF_8); 852 | for (final byte element : template) { 853 | System.out.format("%02X ", element); 854 | } 855 | System.out.println(); // NOPMD 856 | } 857 | 858 | if (arg.wasGiven(printHighestVersion)) { 859 | final String version = changelogApiBuilder.getHighestSemanticVersion().toString(); 860 | System.out.println(version); // NOPMD 861 | System.exit(0); 862 | } 863 | 864 | if (arg.wasGiven(printHighestVersionTag)) { 865 | final SemanticVersion highestSemanticVersion = 866 | changelogApiBuilder.getHighestSemanticVersion(); 867 | final String tag = highestSemanticVersion.findTag().orElse(""); 868 | System.out.println(tag); // NOPMD 869 | System.exit(0); 870 | } 871 | 872 | if (arg.wasGiven(printNextVersion)) { 873 | final String version = changelogApiBuilder.getNextSemanticVersion().toString(); 874 | System.out.println(version); // NOPMD 875 | System.exit(0); 876 | } 877 | 878 | if (arg.wasGiven(printCurrentVersion)) { 879 | final String version = changelogApiBuilder.getCurrentSemanticVersion().toString(); 880 | System.out.println(version); // NOPMD 881 | System.exit(0); 882 | } 883 | 884 | } catch (final ArgumentException exception) { 885 | System.out.println(exception.getMessageAndUsage()); // NOPMD 886 | System.exit(1); 887 | } 888 | } 889 | 890 | private static void checkArgument(final boolean b, final String string) { 891 | if (!b) { 892 | throw new IllegalStateException(string); 893 | } 894 | } 895 | 896 | public static String getSystemOutPrintln() { 897 | return Main.systemOutPrintln; 898 | } 899 | 900 | public static void recordSystemOutPrintln() { 901 | Main.recordSystemOutPrintln = true; 902 | } 903 | 904 | private static void systemOutPrintln(final String systemOutPrintln) { 905 | if (Main.recordSystemOutPrintln) { 906 | Main.systemOutPrintln = systemOutPrintln; 907 | } else { 908 | System.out.println(systemOutPrintln); // NOPMD 909 | } 910 | } 911 | } 912 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 3.0.0 (2025-10-07) 2 | 3 | ### Breaking changes 4 | 5 | - nodejs 22 support ([ab3d6](https://github.com/tomasbjerre/git-changelog-command-line/commit/ab3d6358e94a52a) Tomas Bjerre) 6 | 7 | ### Features 8 | 9 | - nodejs 22 support ([ab3d6](https://github.com/tomasbjerre/git-changelog-command-line/commit/ab3d6358e94a52a) Tomas Bjerre) 10 | 11 | ### Dependency updates 12 | 13 | - gradle 9 ([179a1](https://github.com/tomasbjerre/git-changelog-command-line/commit/179a127ef2c0f73) Tomas Bjerre) 14 | ## 2.5.9 (2025-09-28) 15 | 16 | ### Dependency updates 17 | 18 | - dependencies ([d782e](https://github.com/tomasbjerre/git-changelog-command-line/commit/d782e269bcd2f30) Tomas Bjerre) 19 | ## 2.5.8 (2025-09-28) 20 | 21 | ### Dependency updates 22 | 23 | - dependencies ([05498](https://github.com/tomasbjerre/git-changelog-command-line/commit/054983fec444a2b) Tomas Bjerre) 24 | ## 2.5.8 (2025-09-28) 25 | 26 | ### Dependency updates 27 | 28 | - dependencies ([05498](https://github.com/tomasbjerre/git-changelog-command-line/commit/054983fec444a2b) Tomas Bjerre) 29 | ## 2.5.8 (2025-09-28) 30 | 31 | ### Dependency updates 32 | 33 | - dependencies ([05498](https://github.com/tomasbjerre/git-changelog-command-line/commit/054983fec444a2b) Tomas Bjerre) 34 | ## 2.5.7 (2025-07-29) 35 | 36 | ### Dependency updates 37 | 38 | - dependency updates ([08bb9](https://github.com/tomasbjerre/git-changelog-command-line/commit/08bb9431b0cb398) Tomas Bjerre) 39 | ## 2.5.6 (2025-04-07) 40 | 41 | ### Bug Fixes 42 | 43 | - adding missing --prepend-template ([5eadf](https://github.com/tomasbjerre/git-changelog-command-line/commit/5eadf8413fd31b7) Tomas Bjerre) 44 | 45 | ## 2.5.5 (2025-03-16) 46 | 47 | ### Dependency updates 48 | 49 | - git-changelog-lib ([81e7d](https://github.com/tomasbjerre/git-changelog-command-line/commit/81e7ddd085397a0) Tomas Bjerre) 50 | ## 2.5.4 (2025-03-16) 51 | 52 | ### Dependency updates 53 | 54 | - git-changelog-lib, gson, slf4j, json-smart, commons-io, jackson ([44b9c](https://github.com/tomasbjerre/git-changelog-command-line/commit/44b9c81fd488597) Tomas Bjerre) 55 | ## 2.5.3 (2025-01-26) 56 | 57 | ### Bug Fixes 58 | 59 | - reverse order in eachUrlPart ([d55bb](https://github.com/tomasbjerre/git-changelog-command-line/commit/d55bb21391f29a0) Tomas Bjerre) 60 | 61 | ## 2.5.2 (2025-01-18) 62 | 63 | ### Dependency updates 64 | 65 | - upgrading dependencies ([904e7](https://github.com/tomasbjerre/git-changelog-command-line/commit/904e7fc55f0e3a4) Tomas Bjerre) 66 | ## 2.5.1 (2024-10-16) 67 | 68 | ### Dependency updates 69 | 70 | - show dependency updates in changelog ([f4ade](https://github.com/tomasbjerre/git-changelog-command-line/commit/f4ade639678d650) Tomas Bjerre) 71 | ## 2.5.0 (2024-10-16) 72 | 73 | ### Features 74 | 75 | - scope helpers to support chore(deps) ([c6105](https://github.com/tomasbjerre/git-changelog-command-line/commit/c6105a193017afb) Tomas Bjerre) 76 | 77 | ## 2.4.1 (2024-10-03) 78 | 79 | ### Bug Fixes 80 | 81 | - trying to fix build script ([7e78a](https://github.com/tomasbjerre/git-changelog-command-line/commit/7e78a55704e33f8) Tomas Bjerre) 82 | 83 | ## 2.4.0 (2024-10-03) 84 | 85 | ### Features 86 | 87 | - using new build scripts ([ad7cb](https://github.com/tomasbjerre/git-changelog-command-line/commit/ad7cb428b3d9f3c) Tomas Bjerre) 88 | 89 | ### Bug Fixes 90 | 91 | - maby fixed build script for release ([fef9f](https://github.com/tomasbjerre/git-changelog-command-line/commit/fef9f8de9223b0f) Tomas Bjerre) 92 | - stepping dependencies ([ff8a5](https://github.com/tomasbjerre/git-changelog-command-line/commit/ff8a53c435d49ce) Tomas Bjerre) 93 | 94 | ## 2.3.0 (2024-07-07) 95 | 96 | ### Features 97 | 98 | - build with java 17 ([a60eb](https://github.com/tomasbjerre/git-changelog-command-line/commit/a60eb48de6359b7) Tomas Bjerre) 99 | 100 | ## 2.2.3 (2024-07-06) 101 | 102 | ### Bug Fixes 103 | 104 | - updating dependencies ([1f32f](https://github.com/tomasbjerre/git-changelog-command-line/commit/1f32f4c620fde24) Tomas Bjerre) [#19](https://github.com/tomasbjerre/git-changelog-command-line/issues/19) 105 | 106 | ## 2.2.2 (2024-04-01) 107 | 108 | ## 2.2.1 (2024-02-25) 109 | 110 | ## 2.2.0 (2024-02-25) 111 | 112 | ### Features 113 | 114 | - bundling it with Nashorn to enable javascript helpers in java 11+ ([544d9](https://github.com/tomasbjerre/git-changelog-command-line/commit/544d9eead974946) Tomas Bjerre) 115 | 116 | ## 2.1.0 (2024-02-10) 117 | 118 | ### Features 119 | 120 | - **conventional-commits** allow whitespace, colon and comma as separator in scope ([69b31](https://github.com/tomasbjerre/git-changelog-command-line/commit/69b3100b1092291) Tomas Bjerre) 121 | 122 | ## 2.0.0 (2024-01-27) 123 | 124 | ### Breaking changes 125 | 126 | - JGit 6 and Java 11 ([340e2](https://github.com/tomasbjerre/git-changelog-command-line/commit/340e2f3472b0f25) Tomas Bjerre) 127 | 128 | ## 1.109.1 (2023-12-01) 129 | 130 | ### Bug Fixes 131 | 132 | - mapping commits to lowest possible semantic tag ([6d4ec](https://github.com/tomasbjerre/git-changelog-command-line/commit/6d4ec6e497f7d2a) Tomas Bjerre) 133 | 134 | ## 1.109.0 (2023-10-30) 135 | 136 | ### Features 137 | 138 | - adding path filters ([3f3bd](https://github.com/tomasbjerre/git-changelog-command-line/commit/3f3bd7a48bc271e) Tomas Bjerre) 139 | 140 | ## 1.108.3 (2023-10-17) 141 | 142 | ### Bug Fixes 143 | 144 | - triggering new version, after faulty release ([a37f7](https://github.com/tomasbjerre/git-changelog-command-line/commit/a37f76746f20703) Tomas Bjerre) 145 | 146 | ## 1.108.2 (2023-10-17) 147 | 148 | ## 1.108.1 (2023-10-17) 149 | 150 | ### Bug Fixes 151 | 152 | - fixed gitlab issues url ([b8f9a](https://github.com/tomasbjerre/git-changelog-command-line/commit/b8f9ae61d1916c5) Tomas Bjerre) 153 | 154 | ### Other changes 155 | 156 | **Merge pull request #17 from adechoudens/docs/gitlab_issue_pattern** 157 | 158 | * docs(README): Added '--gitlab-issue-pattern' to the possible commands 159 | 160 | [35c5e](https://github.com/tomasbjerre/git-changelog-command-line/commit/35c5e3d45201429) Tomas Bjerre *2023-10-17 15:49:55* 161 | 162 | 163 | ## 1.108.0 (2023-10-16) 164 | 165 | ### Features 166 | 167 | - Added gitlab issue pattern option ([5d264](https://github.com/tomasbjerre/git-changelog-command-line/commit/5d264c354349deb) Antoine de Choudens) 168 | 169 | ### Other changes 170 | 171 | **Merge pull request #16 from adechoudens/feat/gilab-issue-pattern** 172 | 173 | * feat: Added gitlab issue pattern option 174 | 175 | [dac79](https://github.com/tomasbjerre/git-changelog-command-line/commit/dac791ad9688577) Tomas Bjerre *2023-10-16 17:01:08* 176 | 177 | **Merge pull request #14 from SchulteMarkus/patch-1** 178 | 179 | * docs(README): '--patch-version-pattern' example respecting commit scope 180 | 181 | [14563](https://github.com/tomasbjerre/git-changelog-command-line/commit/145639cdd8a917c) Tomas Bjerre *2023-09-29 12:55:20* 182 | 183 | 184 | ## 1.107.1 (2023-09-24) 185 | 186 | ### Bug Fixes 187 | 188 | - current version ([59578](https://github.com/tomasbjerre/git-changelog-command-line/commit/59578cc2a659593) Tomas Bjerre) 189 | 190 | ## 1.107.0 (2023-09-24) 191 | 192 | ### Features 193 | 194 | - print current version ([070d1](https://github.com/tomasbjerre/git-changelog-command-line/commit/070d13b1a6b4602) Tomas Bjerre) 195 | 196 | ## 1.106.0 (2023-09-11) 197 | 198 | ### Features 199 | 200 | - add filtering for footer tokens ([5cb28](https://github.com/tomasbjerre/git-changelog-command-line/commit/5cb28fe1c9e8aa0) Tomas Bjerre) 201 | 202 | ## 1.105.0 (2023-08-31) 203 | 204 | ### Features 205 | 206 | - prioritizing commits semantically when adding to tags ([48fcc](https://github.com/tomasbjerre/git-changelog-command-line/commit/48fcc1f6300daaa) Tomas Bjerre) 207 | 208 | ## 1.104.1 (2023-07-30) 209 | 210 | ### Bug Fixes 211 | 212 | - look for exact revision name before finding using endswith ([d65bf](https://github.com/tomasbjerre/git-changelog-command-line/commit/d65bfa4d504ab5d) Tomas Bjerre) 213 | 214 | ## 1.104.0 (2023-07-29) 215 | 216 | ### Features 217 | 218 | - from/to inclusiveness ([9f7e7](https://github.com/tomasbjerre/git-changelog-command-line/commit/9f7e7c8b2f838ba) Tomas Bjerre) 219 | - ifContainsIssueLabel, ifIssueLabel and from/to revision ([1fc63](https://github.com/tomasbjerre/git-changelog-command-line/commit/1fc6324794fab16) Tomas Bjerre) 220 | 221 | ## 1.103.2 (2023-07-04) 222 | 223 | ## 1.103.1 (2023-07-04) 224 | 225 | ## 1.103.0 (2023-07-04) 226 | 227 | ### Features 228 | 229 | - docker image ([8f3b2](https://github.com/tomasbjerre/git-changelog-command-line/commit/8f3b2b455963288) Tomas Bjerre) 230 | 231 | ### Other changes 232 | 233 | **Merge pull request #13 from tthornton3-chwy/master** 234 | 235 | * Adds additonal fields flag 236 | 237 | [5d484](https://github.com/tomasbjerre/git-changelog-command-line/commit/5d4845ae5a7d8eb) Tomas Bjerre *2023-07-04 05:38:32* 238 | 239 | **Adds additonal fields flag** 240 | 241 | 242 | [9cea3](https://github.com/tomasbjerre/git-changelog-command-line/commit/9cea3efe18ded74) Taylore *2023-07-03 17:05:29* 243 | 244 | 245 | ## 1.102.0 (2023-04-22) 246 | 247 | ### Features 248 | 249 | - stringHelpers ([40d34](https://github.com/tomasbjerre/git-changelog-command-line/commit/40d34fce6df839d) Tomas Bjerre) 250 | 251 | ## 1.101.10 (2023-03-12) 252 | 253 | ### Bug Fixes 254 | 255 | - reduce logging ([9e38d](https://github.com/tomasbjerre/git-changelog-command-line/commit/9e38dfa2fd581bf) Tomas Bjerre) 256 | 257 | ## 1.101.9 (2023-03-12) 258 | 259 | ## 1.101.8 (2023-02-16) 260 | 261 | ### Bug Fixes 262 | 263 | - parsing newest commits first ([3df18](https://github.com/tomasbjerre/git-changelog-command-line/commit/3df18f5b17be14b) Tomas Bjerre) 264 | 265 | ## 1.101.7 (2023-01-04) 266 | 267 | ### Bug Fixes 268 | 269 | - allow space before : in commit message ([d40b9](https://github.com/tomasbjerre/git-changelog-command-line/commit/d40b944bab8d77a) Tomas Bjerre) 270 | 271 | ## 1.101.6 (2022-12-12) 272 | 273 | ## 1.101.5 (2022-12-12) 274 | 275 | ### Bug Fixes 276 | 277 | - making semantic version match not greedy ([162cc](https://github.com/tomasbjerre/git-changelog-command-line/commit/162cc2fdd7df2ee) Tomas Bjerre) 278 | 279 | ## 1.101.4 (2022-12-03) 280 | 281 | ### Bug Fixes 282 | 283 | - let semantic tag have priority if several tags on same commit ([94862](https://github.com/tomasbjerre/git-changelog-command-line/commit/94862c1aac67471) Tomas Bjerre) 284 | 285 | ## 1.101.3 (2022-10-24) 286 | 287 | ### Bug Fixes 288 | 289 | - stepping dependencies to fix CVE-2022-42889 ([8686b](https://github.com/tomasbjerre/git-changelog-command-line/commit/8686b3865698caf) Tomas Bjerre) 290 | 291 | ## 1.101.2 (2022-09-10) 292 | 293 | ### Bug Fixes 294 | 295 | - detecting missing patch-version as 0 ([bf8fb](https://github.com/tomasbjerre/git-changelog-command-line/commit/bf8fb0b19ab5b1f) Tomas Bjerre) 296 | 297 | ## 1.101.1 (2022-08-02) 298 | 299 | ## 1.101.0 (2022-08-01) 300 | 301 | ### Features 302 | 303 | - adding encoding config in API ([80d60](https://github.com/tomasbjerre/git-changelog-command-line/commit/80d60d9e51a238b) Tomas Bjerre) 304 | 305 | ## 1.100.2 (2022-05-01) 306 | 307 | ## 1.100.1 (2022-03-18) 308 | 309 | ### Bug Fixes 310 | 311 | - handle case when no tag in repo ([293a8](https://github.com/tomasbjerre/git-changelog-command-line/commit/293a8451a7b273d) Tomas Bjerre) 312 | 313 | ## 1.100.0 (2022-03-17) 314 | 315 | ### Features 316 | 317 | - fall back on HEAD and MASTER if no toRef is given ([b22c3](https://github.com/tomasbjerre/git-changelog-command-line/commit/b22c3fbcb67b6d3) Tomas Bjerre) 318 | 319 | ## 1.99.8 (2022-02-15) 320 | 321 | ## 1.99.7 (2022-01-20) 322 | 323 | ## 1.99.6 (2022-01-17) 324 | 325 | ## 1.99.5 (2022-01-16) 326 | 327 | ## 1.99.4 (2022-01-16) 328 | 329 | ### Bug Fixes 330 | 331 | - disable integrations with a boolean useIntegrations ([ca488](https://github.com/tomasbjerre/git-changelog-command-line/commit/ca4886357207905) Tomas Bjerre) 332 | 333 | ## 1.99.3 (2022-01-05) 334 | 335 | ### Bug Fixes 336 | 337 | - only parse enabled issues ([03dbb](https://github.com/tomasbjerre/git-changelog-command-line/commit/03dbb4dc89f02a3) Tomas Bjerre) 338 | 339 | ## 1.99.2 (2021-12-23) 340 | 341 | ## 1.99.1 (2021-12-22) 342 | 343 | ## 1.99.0 (2021-12-12) 344 | 345 | ### Features 346 | 347 | - handlebarsHelperFile ([bcaf1](https://github.com/tomasbjerre/git-changelog-command-line/commit/bcaf1753409f48a) Tomas Bjerre) 348 | 349 | ## 1.98.0 (2021-12-03) 350 | 351 | ### Other changes 352 | 353 | **Merge pull request #9 from rimuln/feature/5** 354 | 355 | * feat Support bearer authorization for Jira 356 | 357 | [a244c](https://github.com/tomasbjerre/git-changelog-command-line/commit/a244c0c834b93f4) Tomas Bjerre *2021-12-03 17:23:13* 358 | 359 | **feat Support bearer authorization for Jira** 360 | 361 | 362 | [67272](https://github.com/tomasbjerre/git-changelog-command-line/commit/672722b33a64c67) Lumír Návrat *2021-12-01 19:56:44* 363 | 364 | 365 | ## 1.97.3 (2021-11-21) 366 | 367 | ## 1.97.2 (2021-11-21) 368 | 369 | ## 1.97.1 (2021-11-21) 370 | 371 | ## 1.97.0 (2021-11-21) 372 | 373 | ### Features 374 | 375 | - partials ([996d4](https://github.com/tomasbjerre/git-changelog-command-line/commit/996d494bca15f39) Tomas Bjerre) 376 | 377 | ### Other changes 378 | 379 | **Delete release.sh** 380 | 381 | 382 | [2dfde](https://github.com/tomasbjerre/git-changelog-command-line/commit/2dfdefdbf506424) Tomas Bjerre *2021-11-20 21:11:12* 383 | 384 | 385 | ## 1.96.6 (2021-11-20) 386 | 387 | ### Bug Fixes 388 | 389 | - testing ([752d5](https://github.com/tomasbjerre/git-changelog-command-line/commit/752d5942065d7f4) Tomas Bjerre) 390 | 391 | ## 1.96.5 (2021-11-20) 392 | 393 | ## 1.96.4 (2021-11-20) 394 | 395 | ### Bug Fixes 396 | 397 | - COMMAND type ([7a2fc](https://github.com/tomasbjerre/git-changelog-command-line/commit/7a2fc45e1c64411) Tomas Bjerre) 398 | 399 | ## 1.96.3 (2021-11-20) 400 | 401 | ## 1.96.2 (2021-11-20) 402 | 403 | ## 1.96.1 (2021-11-20) 404 | 405 | ## v1.96.0 (2021-11-20) 406 | 407 | ### Other changes 408 | 409 | **1.96.0** 410 | 411 | 412 | [b35a8](https://github.com/tomasbjerre/git-changelog-command-line/commit/b35a853c094c3dc) Tomas Bjerre *2021-11-20 13:14:13* 413 | 414 | 415 | ## 1.96.0 (2021-11-20) 416 | 417 | ### Bug Fixes 418 | 419 | - match Windows paths ([bea28](https://github.com/tomasbjerre/git-changelog-command-line/commit/bea28843cf58a5d) Tomas Bjerre) 420 | 421 | ## v1.95.0 (2021-11-20) 422 | 423 | ### Other changes 424 | 425 | **1.95.0** 426 | 427 | 428 | [8c2c3](https://github.com/tomasbjerre/git-changelog-command-line/commit/8c2c36252d2403e) Tomas Bjerre *2021-11-20 12:23:43* 429 | 430 | 431 | ## 1.95.0 (2021-11-20) 432 | 433 | ### Features 434 | 435 | - npm-java-runner ([72e92](https://github.com/tomasbjerre/git-changelog-command-line/commit/72e923e6add5f0b) Tomas Bjerre) 436 | 437 | ## 1.94.0 (2021-11-16) 438 | 439 | ### Features 440 | 441 | - Redmine Support ([8c08a](https://github.com/tomasbjerre/git-changelog-command-line/commit/8c08aaf58cd1647) Hakan Uygun) 442 | 443 | ### Other changes 444 | 445 | **Merge pull request #8 from huygun/feature/redmine** 446 | 447 | * feat: Redmine Support 448 | 449 | [76828](https://github.com/tomasbjerre/git-changelog-command-line/commit/7682893f3cf42c8) Tomas Bjerre *2021-11-16 17:04:29* 450 | 451 | 452 | ## 1.93.0 (2021-10-17) 453 | 454 | ## 1.92.0 (2021-10-17) 455 | 456 | ## 1.91.0 (2021-10-17) 457 | 458 | ## 1.90.0 (2021-10-17) 459 | 460 | ### Features 461 | 462 | - only step patch if matching pattern ([11d06](https://github.com/tomasbjerre/git-changelog-command-line/commit/11d06d7b1128dc1) Tomas Bjerre) 463 | 464 | ## 1.89.0 (2021-07-15) 465 | 466 | ### Features 467 | 468 | - optional minor/major patterns ([7c70e](https://github.com/tomasbjerre/git-changelog-command-line/commit/7c70e56f135d6a6) Tomas Bjerre) 469 | 470 | ## 1.88.0 (2021-06-17) 471 | 472 | ### Features 473 | 474 | - --show-debug-info ([1ba21](https://github.com/tomasbjerre/git-changelog-command-line/commit/1ba2189a5ada2ee) Tomas Bjerre) 475 | 476 | ## 1.87.0 (2021-06-17) 477 | 478 | ## 1.86.0 (2021-06-17) 479 | 480 | ## 1.85.2 (2021-06-11) 481 | 482 | ## 1.85.1 (2021-06-09) 483 | 484 | ## 1.85.0 (2021-06-09) 485 | 486 | ## 1.84.0 (2021-06-09) 487 | 488 | ## 1.83.0 (2021-06-03) 489 | 490 | ## 1.82.0 (2021-06-02) 491 | 492 | ### Features 493 | 494 | - regexp in ifCommitType and ifCommitScope ([aecae](https://github.com/tomasbjerre/git-changelog-command-line/commit/aecae77be30ff4b) Tomas Bjerre) 495 | 496 | ### Other changes 497 | 498 | **Updating changelog with 1.81.0 [GRADLE SCRIPT]** 499 | 500 | 501 | [0a326](https://github.com/tomasbjerre/git-changelog-command-line/commit/0a3269c5ff2cb12) Tomas Bjerre *2021-05-27 17:02:01* 502 | 503 | 504 | ## 1.81.0 (2021-05-27) 505 | 506 | ### Other changes 507 | 508 | **New version: 1.81.0 [GRADLE SCRIPT]** 509 | 510 | 511 | [dc440](https://github.com/tomasbjerre/git-changelog-command-line/commit/dc44036fe101d0a) Tomas Bjerre *2021-05-27 17:01:49* 512 | 513 | 514 | ## 1.80.0 (2021-05-27) 515 | 516 | ### Other changes 517 | 518 | **New version: 1.80.0 [GRADLE SCRIPT]** 519 | 520 | 521 | [2300c](https://github.com/tomasbjerre/git-changelog-command-line/commit/2300c742946f4a3) Tomas Bjerre *2021-05-27 15:09:36* 522 | 523 | **Updating changelog with 1.79.0 [GRADLE SCRIPT]** 524 | 525 | 526 | [c8efe](https://github.com/tomasbjerre/git-changelog-command-line/commit/c8efea7abea8af4) Tomas Bjerre *2021-05-27 15:00:50* 527 | 528 | 529 | ## 1.79.0 (2021-05-27) 530 | 531 | ### Other changes 532 | 533 | **New version: 1.79.0 [GRADLE SCRIPT]** 534 | 535 | 536 | [a2d58](https://github.com/tomasbjerre/git-changelog-command-line/commit/a2d5864173f0fa9) Tomas Bjerre *2021-05-27 15:00:42* 537 | 538 | 539 | ## 1.78.0 (2021-05-26) 540 | 541 | ### Other changes 542 | 543 | **New version: 1.78.0 [GRADLE SCRIPT]** 544 | 545 | 546 | [f5d2d](https://github.com/tomasbjerre/git-changelog-command-line/commit/f5d2d14e516c52b) Tomas Bjerre *2021-05-26 20:09:18* 547 | 548 | 549 | ## 1.77.0 (2021-05-25) 550 | 551 | ### Other changes 552 | 553 | **New version: 1.77.0 [GRADLE SCRIPT]** 554 | 555 | 556 | [3175d](https://github.com/tomasbjerre/git-changelog-command-line/commit/3175d2627386c6d) Tomas Bjerre *2021-05-25 18:49:58* 557 | 558 | **Updating changelog with 1.76.1 [GRADLE SCRIPT]** 559 | 560 | 561 | [38c53](https://github.com/tomasbjerre/git-changelog-command-line/commit/38c53c2e1f84836) Tomas Bjerre *2021-05-25 18:45:06* 562 | 563 | 564 | ## 1.76.1 (2021-05-25) 565 | 566 | ### Other changes 567 | 568 | **New version: 1.76.1 [GRADLE SCRIPT]** 569 | 570 | 571 | [03c0f](https://github.com/tomasbjerre/git-changelog-command-line/commit/03c0f9d804b3057) Tomas Bjerre *2021-05-25 18:44:57* 572 | 573 | **Updating changelog with 1.76.0 [GRADLE SCRIPT]** 574 | 575 | 576 | [cc196](https://github.com/tomasbjerre/git-changelog-command-line/commit/cc1961d3a3b9c0f) Tomas Bjerre *2021-05-25 18:29:03* 577 | 578 | 579 | ## 1.76.0 (2021-05-25) 580 | 581 | ### Other changes 582 | 583 | **New version: 1.76.0 [GRADLE SCRIPT]** 584 | 585 | 586 | [1f40d](https://github.com/tomasbjerre/git-changelog-command-line/commit/1f40d644fa80b84) Tomas Bjerre *2021-05-25 18:28:56* 587 | 588 | **Updating changelog with 1.75.0 [GRADLE SCRIPT]** 589 | 590 | 591 | [0178c](https://github.com/tomasbjerre/git-changelog-command-line/commit/0178c415afc26a7) Tomas Bjerre *2021-05-25 16:30:18* 592 | 593 | 594 | ## 1.75.0 (2021-05-25) 595 | 596 | ### Other changes 597 | 598 | **New version: 1.75.0 [GRADLE SCRIPT]** 599 | 600 | 601 | [96242](https://github.com/tomasbjerre/git-changelog-command-line/commit/96242d9d02e863f) Tomas Bjerre *2021-05-25 16:30:11* 602 | 603 | **updating example** 604 | 605 | 606 | [238cd](https://github.com/tomasbjerre/git-changelog-command-line/commit/238cdd4c30d3cf2) Tomas Bjerre *2021-05-25 16:17:18* 607 | 608 | 609 | ## 1.74.0 (2021-05-25) 610 | 611 | ### Other changes 612 | 613 | **New version: 1.74.0 [GRADLE SCRIPT]** 614 | 615 | 616 | [74194](https://github.com/tomasbjerre/git-changelog-command-line/commit/74194a1e2ab6dc8) Tomas Bjerre *2021-05-25 16:04:49* 617 | 618 | **Updating changelog with 1.73.0 [GRADLE SCRIPT]** 619 | 620 | 621 | [ccec7](https://github.com/tomasbjerre/git-changelog-command-line/commit/ccec7903d87968c) Tomas Bjerre *2021-05-25 15:52:23* 622 | 623 | 624 | ## 1.73.0 (2021-05-25) 625 | 626 | ### Other changes 627 | 628 | **New version: 1.73.0 [GRADLE SCRIPT]** 629 | 630 | 631 | [15ed4](https://github.com/tomasbjerre/git-changelog-command-line/commit/15ed4492efe57ef) Tomas Bjerre *2021-05-25 15:52:16* 632 | 633 | **working on example** 634 | 635 | 636 | [7d05b](https://github.com/tomasbjerre/git-changelog-command-line/commit/7d05b035a3110c9) Tomas Bjerre *2021-05-25 15:50:51* 637 | 638 | **Updating changelog with 1.72.0 [GRADLE SCRIPT]** 639 | 640 | 641 | [6a114](https://github.com/tomasbjerre/git-changelog-command-line/commit/6a114c12e573504) Tomas Bjerre *2021-05-25 14:12:16* 642 | 643 | 644 | ## 1.72.0 (2021-05-25) 645 | 646 | ### Other changes 647 | 648 | **New version: 1.72.0 [GRADLE SCRIPT]** 649 | 650 | 651 | [e4518](https://github.com/tomasbjerre/git-changelog-command-line/commit/e45182d73d495ce) Tomas Bjerre *2021-05-25 14:12:07* 652 | 653 | **working on example** 654 | 655 | 656 | [dfc84](https://github.com/tomasbjerre/git-changelog-command-line/commit/dfc8438949f7afd) Tomas Bjerre *2021-05-25 14:11:10* 657 | 658 | 659 | ## 1.71.0 (2021-05-24) 660 | 661 | ### Other changes 662 | 663 | **New version: 1.71.0 [GRADLE SCRIPT]** 664 | 665 | 666 | [42eee](https://github.com/tomasbjerre/git-changelog-command-line/commit/42eeefc4e6c6e76) Tomas Bjerre *2021-05-24 14:24:17* 667 | 668 | 669 | ## 1.70.0 (2021-05-24) 670 | 671 | ### Other changes 672 | 673 | **New version: 1.70.0 [GRADLE SCRIPT]** 674 | 675 | 676 | [57916](https://github.com/tomasbjerre/git-changelog-command-line/commit/57916a7b67d52ed) Tomas Bjerre *2021-05-24 14:22:06* 677 | 678 | **Updating changelog with 1.69.0 [GRADLE SCRIPT]** 679 | 680 | 681 | [25ba2](https://github.com/tomasbjerre/git-changelog-command-line/commit/25ba2da97a36e8c) Tomas Bjerre *2021-05-23 19:06:10* 682 | 683 | 684 | ## 1.69.0 (2021-05-23) 685 | 686 | ### Features 687 | 688 | - using simple String for helpers ([cbd87](https://github.com/tomasbjerre/git-changelog-command-line/commit/cbd877fa7d71fd9) Tomas Bjerre) 689 | 690 | ### Other changes 691 | 692 | **New version: 1.69.0 [GRADLE SCRIPT]** 693 | 694 | 695 | [64bfb](https://github.com/tomasbjerre/git-changelog-command-line/commit/64bfb846128d0af) Tomas Bjerre *2021-05-23 19:06:02* 696 | 697 | **Updating changelog with 1.68.0 [GRADLE SCRIPT]** 698 | 699 | 700 | [a1013](https://github.com/tomasbjerre/git-changelog-command-line/commit/a10139d3ddb21dc) Tomas Bjerre *2021-05-23 19:02:46* 701 | 702 | 703 | ## 1.68.0 (2021-05-23) 704 | 705 | ### Features 706 | 707 | - using simple String for helpers ([d21a0](https://github.com/tomasbjerre/git-changelog-command-line/commit/d21a07e34cf472d) Tomas Bjerre) 708 | 709 | ### Other changes 710 | 711 | **New version: 1.68.0 [GRADLE SCRIPT]** 712 | 713 | 714 | [eed55](https://github.com/tomasbjerre/git-changelog-command-line/commit/eed558f8d181aba) Tomas Bjerre *2021-05-23 19:02:38* 715 | 716 | **fiddling with semantic changelog** 717 | 718 | 719 | [a42e1](https://github.com/tomasbjerre/git-changelog-command-line/commit/a42e1b3f827c545) Tomas Bjerre *2021-05-23 18:58:25* 720 | 721 | 722 | ## 1.67.0 (2021-05-23) 723 | 724 | ### Other changes 725 | 726 | **New version: 1.67.0 [GRADLE SCRIPT]** 727 | 728 | 729 | [d7d3d](https://github.com/tomasbjerre/git-changelog-command-line/commit/d7d3dfdff9030a0) Tomas Bjerre *2021-05-23 17:18:19* 730 | 731 | **Updating changelog with 1.66.0 [GRADLE SCRIPT]** 732 | 733 | 734 | [8a136](https://github.com/tomasbjerre/git-changelog-command-line/commit/8a136b877a1a7f5) Tomas Bjerre *2021-05-23 17:01:34* 735 | 736 | 737 | ## 1.66.0 (2021-05-23) 738 | 739 | ### Other changes 740 | 741 | **New version: 1.66.0 [GRADLE SCRIPT]** 742 | 743 | 744 | [1fe72](https://github.com/tomasbjerre/git-changelog-command-line/commit/1fe721b0bcd0f48) Tomas Bjerre *2021-05-23 17:01:26* 745 | 746 | **feat support semantic versioning** 747 | 748 | 749 | [5cbe9](https://github.com/tomasbjerre/git-changelog-command-line/commit/5cbe961140bded4) Tomas Bjerre *2021-05-23 17:00:27* 750 | 751 | **Updating changelog with 1.65.0 [GRADLE SCRIPT]** 752 | 753 | 754 | [a203e](https://github.com/tomasbjerre/git-changelog-command-line/commit/a203e1da64cd718) Tomas Bjerre *2021-05-23 16:54:22* 755 | 756 | 757 | ## 1.65.0 (2021-05-23) 758 | 759 | ### Other changes 760 | 761 | **New version: 1.65.0 [GRADLE SCRIPT]** 762 | 763 | 764 | [8fdff](https://github.com/tomasbjerre/git-changelog-command-line/commit/8fdffe123aed6ba) Tomas Bjerre *2021-05-23 16:54:15* 765 | 766 | **feat support semantic versioning** 767 | 768 | 769 | [38d61](https://github.com/tomasbjerre/git-changelog-command-line/commit/38d6135a1ae263f) Tomas Bjerre *2021-05-23 16:53:14* 770 | 771 | **Updating changelog with 1.64.0 [GRADLE SCRIPT]** 772 | 773 | 774 | [f4814](https://github.com/tomasbjerre/git-changelog-command-line/commit/f48146e034bfce8) Tomas Bjerre *2021-05-23 16:45:50* 775 | 776 | 777 | ## 1.64.0 (2021-05-23) 778 | 779 | ### Other changes 780 | 781 | **New version: 1.64.0 [GRADLE SCRIPT]** 782 | 783 | 784 | [4271e](https://github.com/tomasbjerre/git-changelog-command-line/commit/4271e9cefed8712) Tomas Bjerre *2021-05-23 16:45:43* 785 | 786 | **feat support semantic versioning** 787 | 788 | 789 | [10372](https://github.com/tomasbjerre/git-changelog-command-line/commit/10372d605ea2964) Tomas Bjerre *2021-05-23 16:44:35* 790 | 791 | **Updating changelog with 1.63.0 [GRADLE SCRIPT]** 792 | 793 | 794 | [96f9e](https://github.com/tomasbjerre/git-changelog-command-line/commit/96f9e614ed86629) Tomas Bjerre *2021-04-04 18:54:28* 795 | 796 | 797 | ## 1.63.0 (2021-04-04) 798 | 799 | ### Other changes 800 | 801 | **New version: 1.63.0 [GRADLE SCRIPT]** 802 | 803 | 804 | [56e7d](https://github.com/tomasbjerre/git-changelog-command-line/commit/56e7dba3968f16e) Tomas Bjerre *2021-04-04 18:54:21* 805 | 806 | **correcting timestamp** 807 | 808 | 809 | [c121c](https://github.com/tomasbjerre/git-changelog-command-line/commit/c121c7d012855f7) Tomas Bjerre *2021-04-04 18:52:58* 810 | 811 | **Updating changelog with 1.62.0 [GRADLE SCRIPT]** 812 | 813 | 814 | [6c0d5](https://github.com/tomasbjerre/git-changelog-command-line/commit/6c0d5f990817af2) Tomas Bjerre *2021-04-04 18:34:37* 815 | 816 | 817 | ## 1.62.0 (2021-04-04) 818 | 819 | ### Other changes 820 | 821 | **New version: 1.62.0 [GRADLE SCRIPT]** 822 | 823 | 824 | [44116](https://github.com/tomasbjerre/git-changelog-command-line/commit/44116df32bea852) Tomas Bjerre *2021-04-04 18:34:30* 825 | 826 | **new build script** 827 | 828 | 829 | [c0382](https://github.com/tomasbjerre/git-changelog-command-line/commit/c0382112885082d) Tomas Bjerre *2021-04-04 18:30:58* 830 | 831 | **doc** 832 | 833 | 834 | [d6d50](https://github.com/tomasbjerre/git-changelog-command-line/commit/d6d50006d3a472a) Tomas Bjerre *2021-04-04 17:03:17* 835 | 836 | **Updating changelog with 1.61.0 [GRADLE SCRIPT]** 837 | 838 | 839 | [fe318](https://github.com/tomasbjerre/git-changelog-command-line/commit/fe318512f414552) Tomas Bjerre *2021-04-04 17:01:29* 840 | 841 | 842 | ## 1.61.0 (2021-04-04) 843 | 844 | ### Other changes 845 | 846 | **New version: 1.61.0 [GRADLE SCRIPT]** 847 | 848 | 849 | [ebf9a](https://github.com/tomasbjerre/git-changelog-command-line/commit/ebf9a4107901358) Tomas Bjerre *2021-04-04 16:58:51* 850 | 851 | **new build script** 852 | 853 | 854 | [3a68e](https://github.com/tomasbjerre/git-changelog-command-line/commit/3a68ef98d978e80) Tomas Bjerre *2021-04-04 16:57:27* 855 | 856 | **new build script** 857 | 858 | 859 | [d9466](https://github.com/tomasbjerre/git-changelog-command-line/commit/d9466a8f207a417) Tomas Bjerre *2021-04-04 16:56:41* 860 | 861 | **Updating changelog with 1.60.1 [GRADLE SCRIPT]** 862 | 863 | 864 | [06cc5](https://github.com/tomasbjerre/git-changelog-command-line/commit/06cc575adc2608d) Tomas Bjerre *2021-04-04 16:01:43* 865 | 866 | 867 | ## 1.60.1 (2021-04-04) 868 | 869 | ### Other changes 870 | 871 | **New version: 1.60.1 [GRADLE SCRIPT]** 872 | 873 | 874 | [cde3f](https://github.com/tomasbjerre/git-changelog-command-line/commit/cde3fbd31ff4b69) Tomas Bjerre *2021-04-04 16:01:36* 875 | 876 | **new build script** 877 | 878 | 879 | [b3037](https://github.com/tomasbjerre/git-changelog-command-line/commit/b303742f3be2df9) Tomas Bjerre *2021-04-04 15:57:37* 880 | 881 | **[Gradle Release Plugin] - new version commit: '1.60-SNAPSHOT'.** 882 | 883 | 884 | [4acf1](https://github.com/tomasbjerre/git-changelog-command-line/commit/4acf1e71749911b) Tomas Bjerre *2021-03-29 15:40:24* 885 | 886 | 887 | ## 1.59 (2021-03-29) 888 | 889 | ### Other changes 890 | 891 | **[Gradle Release Plugin] - pre tag commit: '1.59'.** 892 | 893 | 894 | [7572c](https://github.com/tomasbjerre/git-changelog-command-line/commit/7572c5ada8f619b) Tomas Bjerre *2021-03-29 15:39:04* 895 | 896 | **pretty printing output JENKINS-65252** 897 | 898 | 899 | [e1993](https://github.com/tomasbjerre/git-changelog-command-line/commit/e199393b7b624e2) Tomas Bjerre *2021-03-29 15:37:29* 900 | 901 | **[Gradle Release Plugin] - new version commit: '1.59-SNAPSHOT'.** 902 | 903 | 904 | [888da](https://github.com/tomasbjerre/git-changelog-command-line/commit/888da2639ee2762) Tomas Bjerre *2021-01-18 17:01:00* 905 | 906 | 907 | ## 1.58 (2021-01-18) 908 | 909 | ### Other changes 910 | 911 | **[Gradle Release Plugin] - pre tag commit: '1.58'.** 912 | 913 | 914 | [9c06e](https://github.com/tomasbjerre/git-changelog-command-line/commit/9c06efd169bae66) Tomas Bjerre *2021-01-18 16:59:31* 915 | 916 | **Removing default ignore filter on message** 917 | 918 | 919 | [e9181](https://github.com/tomasbjerre/git-changelog-command-line/commit/e91812b6eef13cf) Tomas Bjerre *2021-01-18 16:57:58* 920 | 921 | **[Gradle Release Plugin] - new version commit: '1.58-SNAPSHOT'.** 922 | 923 | 924 | [5964f](https://github.com/tomasbjerre/git-changelog-command-line/commit/5964ff111b45f2c) Tomas Bjerre *2020-11-07 16:02:20* 925 | 926 | 927 | ## 1.57 (2020-11-07) 928 | 929 | ### Other changes 930 | 931 | **[Gradle Release Plugin] - pre tag commit: '1.57'.** 932 | 933 | 934 | [2ee98](https://github.com/tomasbjerre/git-changelog-command-line/commit/2ee982b34663392) Tomas Bjerre *2020-11-07 16:01:08* 935 | 936 | **Adjustments after merge of PR #7** 937 | 938 | 939 | [4d2af](https://github.com/tomasbjerre/git-changelog-command-line/commit/4d2af148b1a7ba0) Tomas Bjerre *2020-11-07 15:58:51* 940 | 941 | **Support custom headers to JIRA to bypass 2 factor auth** 942 | 943 | 944 | [2792a](https://github.com/tomasbjerre/git-changelog-command-line/commit/2792a5046366c47) Yauheni Biruk *2020-11-07 14:57:23* 945 | 946 | **[Gradle Release Plugin] - new version commit: '1.57-SNAPSHOT'.** 947 | 948 | 949 | [052d0](https://github.com/tomasbjerre/git-changelog-command-line/commit/052d0e4efb01adc) Tomas Bjerre *2020-02-25 15:57:19* 950 | 951 | 952 | ## 1.56 (2020-02-25) 953 | 954 | ### Other changes 955 | 956 | **[Gradle Release Plugin] - pre tag commit: '1.56'.** 957 | 958 | 959 | [0897e](https://github.com/tomasbjerre/git-changelog-command-line/commit/0897e72bf00ca1d) Tomas Bjerre *2020-02-25 15:56:05* 960 | 961 | **Merge pull request #5 from nemui/jira_token** 962 | 963 | * add support for jira tokens 964 | 965 | [1e343](https://github.com/tomasbjerre/git-changelog-command-line/commit/1e34348e1e28be5) Tomas Bjerre *2020-02-25 15:54:22* 966 | 967 | **naming** 968 | 969 | 970 | [0246b](https://github.com/tomasbjerre/git-changelog-command-line/commit/0246b3a370c4f13) Dmitry Mamchur *2020-02-25 13:08:49* 971 | 972 | **bump git-changelog-lib version** 973 | 974 | 975 | [d3b40](https://github.com/tomasbjerre/git-changelog-command-line/commit/d3b4091c0145e9f) Dmitry Mamchur *2020-02-25 12:39:13* 976 | 977 | **align naming with git-changelog-lib** 978 | 979 | 980 | [53657](https://github.com/tomasbjerre/git-changelog-command-line/commit/53657c77ec38f8b) Dmitry Mamchur *2020-02-25 12:38:51* 981 | 982 | **update readme** 983 | 984 | 985 | [e75d5](https://github.com/tomasbjerre/git-changelog-command-line/commit/e75d56cf326c4a9) Dmitry Mamchur *2020-02-25 12:16:06* 986 | 987 | **add support for jira token** 988 | 989 | 990 | [b48f8](https://github.com/tomasbjerre/git-changelog-command-line/commit/b48f83d7f34079a) Dmitry Mamchur *2020-02-20 15:41:36* 991 | 992 | **openjdk8** 993 | 994 | 995 | [0405a](https://github.com/tomasbjerre/git-changelog-command-line/commit/0405ac4ad84c9fd) Tomas Bjerre *2019-10-09 13:14:34* 996 | 997 | **Create FUNDING.yml** 998 | 999 | 1000 | [067fc](https://github.com/tomasbjerre/git-changelog-command-line/commit/067fca4c6cbe0c5) Tomas Bjerre *2019-09-28 07:05:38* 1001 | 1002 | **Gradle 5** 1003 | 1004 | 1005 | [48acc](https://github.com/tomasbjerre/git-changelog-command-line/commit/48acc0c2ac1839e) Tomas Bjerre *2019-06-11 18:03:15* 1006 | 1007 | **[Gradle Release Plugin] - new version commit: '1.56-SNAPSHOT'.** 1008 | 1009 | 1010 | [5001c](https://github.com/tomasbjerre/git-changelog-command-line/commit/5001c4587733156) Tomas Bjerre *2019-06-11 17:15:07* 1011 | 1012 | 1013 | ## 1.55 (2019-06-11) 1014 | 1015 | ### Other changes 1016 | 1017 | **[Gradle Release Plugin] - pre tag commit: '1.55'.** 1018 | 1019 | 1020 | [155f0](https://github.com/tomasbjerre/git-changelog-command-line/commit/155f004d19bb4d9) Tomas Bjerre *2019-06-11 17:02:23* 1021 | 1022 | **Removing dependency on javax.xml** 1023 | 1024 | 1025 | [11088](https://github.com/tomasbjerre/git-changelog-command-line/commit/1108865f1024786) Tomas Bjerre *2019-06-11 16:58:38* 1026 | 1027 | **[Gradle Release Plugin] - new version commit: '1.55-SNAPSHOT'.** 1028 | 1029 | 1030 | [db45c](https://github.com/tomasbjerre/git-changelog-command-line/commit/db45cc20e2ed83d) Tomas Bjerre *2019-06-11 16:34:40* 1031 | 1032 | 1033 | ## 1.54 (2019-06-11) 1034 | 1035 | ### Other changes 1036 | 1037 | **[Gradle Release Plugin] - pre tag commit: '1.54'.** 1038 | 1039 | 1040 | [0a5f2](https://github.com/tomasbjerre/git-changelog-command-line/commit/0a5f2735d4df1f8) Tomas Bjerre *2019-06-11 16:33:27* 1041 | 1042 | **JDK 11 compatible** 1043 | 1044 | 1045 | [43655](https://github.com/tomasbjerre/git-changelog-command-line/commit/436550774dc2ade) Tomas Bjerre *2019-06-11 16:30:00* 1046 | 1047 | **[Gradle Release Plugin] - new version commit: '1.54-SNAPSHOT'.** 1048 | 1049 | 1050 | [4bc6e](https://github.com/tomasbjerre/git-changelog-command-line/commit/4bc6ec821951691) Tomas Bjerre *2019-05-30 13:45:11* 1051 | 1052 | 1053 | ## 1.53 (2019-05-30) 1054 | 1055 | ### Other changes 1056 | 1057 | **[Gradle Release Plugin] - pre tag commit: '1.53'.** 1058 | 1059 | 1060 | [b1db5](https://github.com/tomasbjerre/git-changelog-command-line/commit/b1db553d52bcc26) Tomas Bjerre *2019-05-30 13:43:54* 1061 | 1062 | **slf4j** 1063 | 1064 | 1065 | [e8f65](https://github.com/tomasbjerre/git-changelog-command-line/commit/e8f65b19415b1ab) Tomas Bjerre *2019-05-30 13:39:40* 1066 | 1067 | **[Gradle Release Plugin] - new version commit: '1.53-SNAPSHOT'.** 1068 | 1069 | 1070 | [b1337](https://github.com/tomasbjerre/git-changelog-command-line/commit/b1337c0e85161f7) Tomas Bjerre *2019-05-29 18:09:17* 1071 | 1072 | 1073 | ## 1.52 (2019-05-29) 1074 | 1075 | ### Other changes 1076 | 1077 | **[Gradle Release Plugin] - pre tag commit: '1.52'.** 1078 | 1079 | 1080 | [c6343](https://github.com/tomasbjerre/git-changelog-command-line/commit/c6343d2f0d50405) Tomas Bjerre *2019-05-29 18:07:51* 1081 | 1082 | **doc** 1083 | 1084 | 1085 | [bd800](https://github.com/tomasbjerre/git-changelog-command-line/commit/bd8004089502412) Tomas Bjerre *2019-05-29 18:04:27* 1086 | 1087 | **[Gradle Release Plugin] - new version commit: '1.52-SNAPSHOT'.** 1088 | 1089 | 1090 | [95c92](https://github.com/tomasbjerre/git-changelog-command-line/commit/95c929a09e56067) Tomas Bjerre *2019-05-29 17:50:07* 1091 | 1092 | 1093 | ## 1.51 (2019-05-29) 1094 | 1095 | ### Other changes 1096 | 1097 | **[Gradle Release Plugin] - pre tag commit: '1.51'.** 1098 | 1099 | 1100 | [57c68](https://github.com/tomasbjerre/git-changelog-command-line/commit/57c68d99faa8302) Tomas Bjerre *2019-05-29 17:48:43* 1101 | 1102 | **doc** 1103 | 1104 | 1105 | [7b912](https://github.com/tomasbjerre/git-changelog-command-line/commit/7b9120a14926f9a) Tomas Bjerre *2019-05-29 17:45:51* 1106 | 1107 | **[Gradle Release Plugin] - new version commit: '1.51-SNAPSHOT'.** 1108 | 1109 | 1110 | [5522e](https://github.com/tomasbjerre/git-changelog-command-line/commit/5522efd1fa3c18b) Tomas Bjerre *2019-05-29 17:43:34* 1111 | 1112 | 1113 | ## 1.50 (2019-05-29) 1114 | 1115 | ### Other changes 1116 | 1117 | **[Gradle Release Plugin] - pre tag commit: '1.50'.** 1118 | 1119 | 1120 | [a969b](https://github.com/tomasbjerre/git-changelog-command-line/commit/a969b2832518feb) Tomas Bjerre *2019-05-29 17:42:15* 1121 | 1122 | **[Gradle Release Plugin] - new version commit: '1.50-SNAPSHOT'.** 1123 | 1124 | 1125 | [2f1c9](https://github.com/tomasbjerre/git-changelog-command-line/commit/2f1c905cd203180) Tomas Bjerre *2019-05-29 17:39:16* 1126 | 1127 | 1128 | ## 1.49 (2019-05-29) 1129 | 1130 | ### Other changes 1131 | 1132 | **[Gradle Release Plugin] - pre tag commit: '1.49'.** 1133 | 1134 | 1135 | [acaea](https://github.com/tomasbjerre/git-changelog-command-line/commit/acaea4b526af50e) Tomas Bjerre *2019-05-29 17:36:54* 1136 | 1137 | **[Gradle Release Plugin] - new version commit: '1.49-SNAPSHOT'.** 1138 | 1139 | 1140 | [5cd22](https://github.com/tomasbjerre/git-changelog-command-line/commit/5cd22591428ab2c) Tomas Bjerre *2019-05-29 17:32:21* 1141 | 1142 | 1143 | ## 1.48 (2019-05-29) 1144 | 1145 | ### Other changes 1146 | 1147 | **[Gradle Release Plugin] - pre tag commit: '1.48'.** 1148 | 1149 | 1150 | [2d93e](https://github.com/tomasbjerre/git-changelog-command-line/commit/2d93e5e9b446227) Tomas Bjerre *2019-05-29 17:28:25* 1151 | 1152 | **doc** 1153 | 1154 | 1155 | [546b4](https://github.com/tomasbjerre/git-changelog-command-line/commit/546b4634f550ac3) Tomas Bjerre *2019-05-29 17:25:56* 1156 | 1157 | **[Gradle Release Plugin] - new version commit: '1.48-SNAPSHOT'.** 1158 | 1159 | 1160 | [e6b98](https://github.com/tomasbjerre/git-changelog-command-line/commit/e6b9829117edb52) Tomas Bjerre *2019-05-29 17:22:39* 1161 | 1162 | 1163 | ## 1.47 (2019-05-29) 1164 | 1165 | ### Other changes 1166 | 1167 | **[Gradle Release Plugin] - pre tag commit: '1.47'.** 1168 | 1169 | 1170 | [44df4](https://github.com/tomasbjerre/git-changelog-command-line/commit/44df4026e7e69dd) Tomas Bjerre *2019-05-29 17:19:49* 1171 | 1172 | **doc** 1173 | 1174 | 1175 | [b9b57](https://github.com/tomasbjerre/git-changelog-command-line/commit/b9b579705985131) Tomas Bjerre *2019-05-29 17:17:19* 1176 | 1177 | **[Gradle Release Plugin] - new version commit: '1.47-SNAPSHOT'.** 1178 | 1179 | 1180 | [48daa](https://github.com/tomasbjerre/git-changelog-command-line/commit/48daad5dc058349) Tomas Bjerre *2019-05-29 17:15:19* 1181 | 1182 | 1183 | ## 1.46 (2019-05-29) 1184 | 1185 | ### Other changes 1186 | 1187 | **[Gradle Release Plugin] - pre tag commit: '1.46'.** 1188 | 1189 | 1190 | [bb84c](https://github.com/tomasbjerre/git-changelog-command-line/commit/bb84c6e3d7f18e0) Tomas Bjerre *2019-05-29 17:14:23* 1191 | 1192 | **doc** 1193 | 1194 | 1195 | [4ad87](https://github.com/tomasbjerre/git-changelog-command-line/commit/4ad87e4ce2c0320) Tomas Bjerre *2019-05-29 17:11:56* 1196 | 1197 | **doc** 1198 | 1199 | 1200 | [e3ff4](https://github.com/tomasbjerre/git-changelog-command-line/commit/e3ff40ca79ec5d4) Tomas Bjerre *2019-05-29 16:45:53* 1201 | 1202 | **Adding jdeploy to release script** 1203 | 1204 | 1205 | [0e711](https://github.com/tomasbjerre/git-changelog-command-line/commit/0e7113abb20c452) Tomas Bjerre *2019-05-29 16:27:50* 1206 | 1207 | **[Gradle Release Plugin] - new version commit: '1.46-SNAPSHOT'.** 1208 | 1209 | 1210 | [c86c4](https://github.com/tomasbjerre/git-changelog-command-line/commit/c86c42d6c4db188) Tomas Bjerre *2019-05-29 16:21:36* 1211 | 1212 | 1213 | ## 1.45 (2019-05-29) 1214 | 1215 | ### Other changes 1216 | 1217 | **[Gradle Release Plugin] - pre tag commit: '1.45'.** 1218 | 1219 | 1220 | [f534e](https://github.com/tomasbjerre/git-changelog-command-line/commit/f534e1fc4ed96be) Tomas Bjerre *2019-05-29 16:20:31* 1221 | 1222 | **Dropping Gradle application and packaging runnable jar** 1223 | 1224 | 1225 | [67ec6](https://github.com/tomasbjerre/git-changelog-command-line/commit/67ec69a7683efd9) Tomas Bjerre *2019-05-29 16:14:46* 1226 | 1227 | **Stepping lib** 1228 | 1229 | 1230 | [58f76](https://github.com/tomasbjerre/git-changelog-command-line/commit/58f760b6e6157bf) Tomas Bjerre *2019-02-25 15:59:02* 1231 | 1232 | 1233 | ## 180420 (2018-04-20) 1234 | 1235 | ### Other changes 1236 | 1237 | **Moving application to before shaddow plugin** 1238 | 1239 | 1240 | [86de9](https://github.com/tomasbjerre/git-changelog-command-line/commit/86de96e119f451a) Tomas Bjerre *2018-04-20 10:00:52* 1241 | 1242 | **Closing RevWalk JENKINS-19994** 1243 | 1244 | 1245 | [69198](https://github.com/tomasbjerre/git-changelog-command-line/commit/69198a6151dc014) Tomas Bjerre *2017-12-30 20:45:19* 1246 | 1247 | **Doc** 1248 | 1249 | 1250 | [090c3](https://github.com/tomasbjerre/git-changelog-command-line/commit/090c31efd122ff4) Tomas Bjerre *2017-12-19 12:31:32* 1251 | 1252 | **[Gradle Release Plugin] - new version commit: '1.42-SNAPSHOT'.** 1253 | 1254 | 1255 | [f326e](https://github.com/tomasbjerre/git-changelog-command-line/commit/f326ed74b2d6f87) Tomas Bjerre *2017-12-19 12:06:12* 1256 | 1257 | 1258 | ## 1.41 (2017-12-19) 1259 | 1260 | ### Other changes 1261 | 1262 | **[Gradle Release Plugin] - pre tag commit: '1.41'.** 1263 | 1264 | 1265 | [6501c](https://github.com/tomasbjerre/git-changelog-command-line/commit/6501c3bf6740082) Tomas Bjerre *2017-12-19 12:05:57* 1266 | 1267 | **Bumping version to fix faulty release** 1268 | 1269 | 1270 | [0b657](https://github.com/tomasbjerre/git-changelog-command-line/commit/0b6575a7726b978) Tomas Bjerre *2017-12-19 12:02:40* 1271 | 1272 | **Description available for Jira issues** 1273 | 1274 | 1275 | [d4841](https://github.com/tomasbjerre/git-changelog-command-line/commit/d4841fab0e3949b) Tomas Bjerre *2017-12-19 11:48:16* 1276 | 1277 | **Adjusting to Bintray** 1278 | 1279 | 1280 | [79bf1](https://github.com/tomasbjerre/git-changelog-command-line/commit/79bf1fad841ef56) Tomas Bjerre *2017-12-19 11:43:01* 1281 | 1282 | **Lib 1.72** 1283 | 1284 | 1285 | [58fa0](https://github.com/tomasbjerre/git-changelog-command-line/commit/58fa0073f072ef6) Tomas Bjerre *2017-09-08 09:08:50* 1286 | 1287 | **[Gradle Release Plugin] - new version commit: '1.40-SNAPSHOT'.** 1288 | 1289 | 1290 | [fb231](https://github.com/tomasbjerre/git-changelog-command-line/commit/fb231301be9a804) Tomas Bjerre *2017-07-25 18:28:33* 1291 | 1292 | 1293 | ## 1.39 (2017-07-25) 1294 | 1295 | ### Other changes 1296 | 1297 | **[Gradle Release Plugin] - pre tag commit: '1.39'.** 1298 | 1299 | 1300 | [eeda7](https://github.com/tomasbjerre/git-changelog-command-line/commit/eeda7c749ec65a3) Tomas Bjerre *2017-07-25 18:28:11* 1301 | 1302 | **Lib 1.71** 1303 | 1304 | 1305 | [1074f](https://github.com/tomasbjerre/git-changelog-command-line/commit/1074f832a4c8934) Tomas Bjerre *2017-07-25 18:26:30* 1306 | 1307 | **[Gradle Release Plugin] - new version commit: '1.39-SNAPSHOT'.** 1308 | 1309 | 1310 | [8077d](https://github.com/tomasbjerre/git-changelog-command-line/commit/8077daed5529e06) Tomas Bjerre *2017-07-24 19:42:43* 1311 | 1312 | 1313 | ## 1.38 (2017-07-24) 1314 | 1315 | ### Other changes 1316 | 1317 | **[Gradle Release Plugin] - pre tag commit: '1.38'.** 1318 | 1319 | 1320 | [f0c38](https://github.com/tomasbjerre/git-changelog-command-line/commit/f0c384fb259bd51) Tomas Bjerre *2017-07-24 19:42:13* 1321 | 1322 | **Lib 1.70** 1323 | 1324 | 1325 | [61cdd](https://github.com/tomasbjerre/git-changelog-command-line/commit/61cdd7d4b44f573) Tomas Bjerre *2017-07-24 19:37:17* 1326 | 1327 | **[Gradle Release Plugin] - new version commit: '1.38-SNAPSHOT'.** 1328 | 1329 | 1330 | [88d56](https://github.com/tomasbjerre/git-changelog-command-line/commit/88d56a9b38fc0c0) Tomas Bjerre *2017-07-08 07:36:52* 1331 | 1332 | 1333 | ## 1.37 (2017-07-08) 1334 | 1335 | ### Other changes 1336 | 1337 | **[Gradle Release Plugin] - pre tag commit: '1.37'.** 1338 | 1339 | 1340 | [3272d](https://github.com/tomasbjerre/git-changelog-command-line/commit/3272d353e7ab72f) Tomas Bjerre *2017-07-08 07:36:23* 1341 | 1342 | **ignoreCommitsOlderThan** 1343 | 1344 | 1345 | [0d528](https://github.com/tomasbjerre/git-changelog-command-line/commit/0d52803865316bd) Tomas Bjerre *2017-07-08 07:35:03* 1346 | 1347 | **[Gradle Release Plugin] - new version commit: '1.37-SNAPSHOT'.** 1348 | 1349 | 1350 | [0e2d0](https://github.com/tomasbjerre/git-changelog-command-line/commit/0e2d0dc1d1345d4) Tomas Bjerre *2017-05-13 09:27:15* 1351 | 1352 | 1353 | ## 1.36 (2017-05-13) 1354 | 1355 | ### Other changes 1356 | 1357 | **[Gradle Release Plugin] - pre tag commit: '1.36'.** 1358 | 1359 | 1360 | [f002e](https://github.com/tomasbjerre/git-changelog-command-line/commit/f002ed923bda361) Tomas Bjerre *2017-05-13 09:27:06* 1361 | 1362 | **[Gradle Release Plugin] - new version commit: '1.36-SNAPSHOT'.** 1363 | 1364 | 1365 | [c0384](https://github.com/tomasbjerre/git-changelog-command-line/commit/c03849e24bb4b44) Tomas Bjerre *2017-04-14 09:19:50* 1366 | 1367 | 1368 | ## 1.35 (2017-04-14) 1369 | 1370 | ### Other changes 1371 | 1372 | **[Gradle Release Plugin] - pre tag commit: '1.35'.** 1373 | 1374 | 1375 | [c3330](https://github.com/tomasbjerre/git-changelog-command-line/commit/c333000c4d5235a) Tomas Bjerre *2017-04-14 09:19:42* 1376 | 1377 | **tag time added to tag model** 1378 | 1379 | 1380 | [141cb](https://github.com/tomasbjerre/git-changelog-command-line/commit/141cb08bbee6fae) Tomas Bjerre *2017-04-14 09:18:12* 1381 | 1382 | **[Gradle Release Plugin] - new version commit: '1.35-SNAPSHOT'.** 1383 | 1384 | 1385 | [bd41f](https://github.com/tomasbjerre/git-changelog-command-line/commit/bd41f02164b894e) Tomas Bjerre *2017-03-25 16:37:02* 1386 | 1387 | 1388 | ## 1.34 (2017-03-25) 1389 | 1390 | ### Other changes 1391 | 1392 | **[Gradle Release Plugin] - pre tag commit: '1.34'.** 1393 | 1394 | 1395 | [89592](https://github.com/tomasbjerre/git-changelog-command-line/commit/8959243fe89f5c1) Tomas Bjerre *2017-03-25 16:36:55* 1396 | 1397 | **GitLab integration** 1398 | 1399 | 1400 | [449ca](https://github.com/tomasbjerre/git-changelog-command-line/commit/449caf097a8fc08) Tomas Bjerre *2017-03-25 16:35:42* 1401 | 1402 | **[Gradle Release Plugin] - new version commit: '1.34-SNAPSHOT'.** 1403 | 1404 | 1405 | [b894a](https://github.com/tomasbjerre/git-changelog-command-line/commit/b894ac599bd4f10) Tomas Bjerre *2017-03-21 16:41:24* 1406 | 1407 | 1408 | ## 1.33 (2017-03-21) 1409 | 1410 | ### Other changes 1411 | 1412 | **[Gradle Release Plugin] - pre tag commit: '1.33'.** 1413 | 1414 | 1415 | [a79f2](https://github.com/tomasbjerre/git-changelog-command-line/commit/a79f2a825827582) Tomas Bjerre *2017-03-21 16:40:46* 1416 | 1417 | **[Gradle Release Plugin] - new version commit: '1.33-SNAPSHOT'.** 1418 | 1419 | 1420 | [eb013](https://github.com/tomasbjerre/git-changelog-command-line/commit/eb013a643b6b23c) Tomas Bjerre *2017-03-20 18:24:35* 1421 | 1422 | 1423 | ## 1.32 (2017-03-20) 1424 | 1425 | ### Other changes 1426 | 1427 | **[Gradle Release Plugin] - pre tag commit: '1.32'.** 1428 | 1429 | 1430 | [4a033](https://github.com/tomasbjerre/git-changelog-command-line/commit/4a033bd334420ba) Tomas Bjerre *2017-03-20 18:24:12* 1431 | 1432 | **Fix Jira labels** 1433 | 1434 | 1435 | [44794](https://github.com/tomasbjerre/git-changelog-command-line/commit/44794701a5eb1dc) Tomas Bjerre *2017-03-20 18:20:07* 1436 | 1437 | **[Gradle Release Plugin] - new version commit: '1.32-SNAPSHOT'.** 1438 | 1439 | 1440 | [09274](https://github.com/tomasbjerre/git-changelog-command-line/commit/092749563f17f44) Tomas Bjerre *2017-03-18 09:33:42* 1441 | 1442 | 1443 | ## 1.31 (2017-03-18) 1444 | 1445 | ### Other changes 1446 | 1447 | **[Gradle Release Plugin] - pre tag commit: '1.31'.** 1448 | 1449 | 1450 | [d7d3d](https://github.com/tomasbjerre/git-changelog-command-line/commit/d7d3d8b183a88e0) Tomas Bjerre *2017-03-18 09:33:29* 1451 | 1452 | **Git Changelog Lib 1.58 -> 1.64** 1453 | 1454 | * Jira issueType and labels 1455 | * GitHub labels 1456 | * 10 seconds timeout to GitHub 1457 | 1458 | [cd884](https://github.com/tomasbjerre/git-changelog-command-line/commit/cd884b3291e7659) Tomas Bjerre *2017-03-18 09:32:26* 1459 | 1460 | **Set theme jekyll-theme-slate** 1461 | 1462 | 1463 | [5bee2](https://github.com/tomasbjerre/git-changelog-command-line/commit/5bee23a3f889712) Tomas Bjerre *2017-02-07 20:21:48* 1464 | 1465 | **[Gradle Release Plugin] - new version commit: '1.31-SNAPSHOT'.** 1466 | 1467 | 1468 | [b23f4](https://github.com/tomasbjerre/git-changelog-command-line/commit/b23f49ba3c7e7eb) Tomas Bjerre *2016-10-22 09:49:53* 1469 | 1470 | 1471 | ## 1.30 (2016-10-22) 1472 | 1473 | ### Other changes 1474 | 1475 | **[Gradle Release Plugin] - pre tag commit: '1.30'.** 1476 | 1477 | 1478 | [0be50](https://github.com/tomasbjerre/git-changelog-command-line/commit/0be50614cb70247) Tomas Bjerre *2016-10-22 09:49:20* 1479 | 1480 | **Adding annotation to context of tag** 1481 | 1482 | 1483 | [680fd](https://github.com/tomasbjerre/git-changelog-command-line/commit/680fd78af6e828a) Tomas Bjerre *2016-10-22 09:46:10* 1484 | 1485 | **doc** 1486 | 1487 | 1488 | [14591](https://github.com/tomasbjerre/git-changelog-command-line/commit/14591c118d9d066) Tomas Bjerre *2016-10-05 18:35:59* 1489 | 1490 | **[Gradle Release Plugin] - new version commit: '1.30-SNAPSHOT'.** 1491 | 1492 | 1493 | [d7c31](https://github.com/tomasbjerre/git-changelog-command-line/commit/d7c31e01d7a1470) Tomas Bjerre *2016-10-05 18:34:26* 1494 | 1495 | 1496 | ## 1.29 (2016-10-05) 1497 | 1498 | ### Other changes 1499 | 1500 | **[Gradle Release Plugin] - pre tag commit: '1.29'.** 1501 | 1502 | 1503 | [f016e](https://github.com/tomasbjerre/git-changelog-command-line/commit/f016e4086d426f3) Tomas Bjerre *2016-10-05 18:33:58* 1504 | 1505 | **Adding merge boolean to commits #35** 1506 | 1507 | 1508 | [b27d7](https://github.com/tomasbjerre/git-changelog-command-line/commit/b27d768978dc40f) Tomas Bjerre *2016-10-05 18:32:06* 1509 | 1510 | **[Gradle Release Plugin] - new version commit: '1.29-SNAPSHOT'.** 1511 | 1512 | 1513 | [5ec9a](https://github.com/tomasbjerre/git-changelog-command-line/commit/5ec9a0eeb4c38ab) Tomas Bjerre *2016-08-11 14:50:34* 1514 | 1515 | 1516 | ## 1.28 (2016-08-11) 1517 | 1518 | ### Other changes 1519 | 1520 | **[Gradle Release Plugin] - pre tag commit: '1.28'.** 1521 | 1522 | 1523 | [9ed83](https://github.com/tomasbjerre/git-changelog-command-line/commit/9ed83cfcfbd15e8) Tomas Bjerre *2016-08-11 14:50:18* 1524 | 1525 | **Lib 1.56 correcting link to Jira** 1526 | 1527 | 1528 | [0663c](https://github.com/tomasbjerre/git-changelog-command-line/commit/0663c27008b6c10) Tomas Bjerre *2016-08-11 14:47:13* 1529 | 1530 | **[Gradle Release Plugin] - new version commit: '1.28-SNAPSHOT'.** 1531 | 1532 | 1533 | [5d14d](https://github.com/tomasbjerre/git-changelog-command-line/commit/5d14d53fea8b9b2) Tomas Bjerre *2016-08-02 18:25:55* 1534 | 1535 | 1536 | ## 1.27 (2016-08-02) 1537 | 1538 | ### Other changes 1539 | 1540 | **[Gradle Release Plugin] - pre tag commit: '1.27'.** 1541 | 1542 | 1543 | [47ff0](https://github.com/tomasbjerre/git-changelog-command-line/commit/47ff0b374c04b9d) Tomas Bjerre *2016-08-02 18:25:48* 1544 | 1545 | **Adding {{hashFull}} variable** 1546 | 1547 | 1548 | [eb89a](https://github.com/tomasbjerre/git-changelog-command-line/commit/eb89a06b91265d8) Tomas Bjerre *2016-08-02 18:24:35* 1549 | 1550 | **[Gradle Release Plugin] - new version commit: '1.27-SNAPSHOT'.** 1551 | 1552 | 1553 | [0f527](https://github.com/tomasbjerre/git-changelog-command-line/commit/0f527f5d3681276) Tomas Bjerre *2016-06-25 00:20:20* 1554 | 1555 | 1556 | ## 1.26 (2016-06-25) 1557 | 1558 | ### Other changes 1559 | 1560 | **[Gradle Release Plugin] - pre tag commit: '1.26'.** 1561 | 1562 | 1563 | [5b863](https://github.com/tomasbjerre/git-changelog-command-line/commit/5b86393ad0b3650) Tomas Bjerre *2016-06-25 00:08:20* 1564 | 1565 | **Faster** 1566 | 1567 | 1568 | [223b3](https://github.com/tomasbjerre/git-changelog-command-line/commit/223b34816bdd780) Tomas Bjerre *2016-06-25 00:07:17* 1569 | 1570 | **[Gradle Release Plugin] - new version commit: '1.26-SNAPSHOT'.** 1571 | 1572 | 1573 | [18d3e](https://github.com/tomasbjerre/git-changelog-command-line/commit/18d3e256b8c5317) Tomas Bjerre *2016-06-24 21:13:45* 1574 | 1575 | 1576 | ## 1.25 (2016-06-24) 1577 | 1578 | ### Other changes 1579 | 1580 | **[Gradle Release Plugin] - pre tag commit: '1.25'.** 1581 | 1582 | 1583 | [c27fe](https://github.com/tomasbjerre/git-changelog-command-line/commit/c27fe014bb575d0) Tomas Bjerre *2016-06-24 21:13:30* 1584 | 1585 | **Fixing merge commits... again...** 1586 | 1587 | 1588 | [72a26](https://github.com/tomasbjerre/git-changelog-command-line/commit/72a26d37a434998) Tomas Bjerre *2016-06-24 21:10:07* 1589 | 1590 | **[Gradle Release Plugin] - new version commit: '1.25-SNAPSHOT'.** 1591 | 1592 | 1593 | [5941b](https://github.com/tomasbjerre/git-changelog-command-line/commit/5941b256d139f5a) Tomas Bjerre *2016-06-24 09:35:58* 1594 | 1595 | 1596 | ## 1.24 (2016-06-24) 1597 | 1598 | ### Other changes 1599 | 1600 | **[Gradle Release Plugin] - pre tag commit: '1.24'.** 1601 | 1602 | 1603 | [ae022](https://github.com/tomasbjerre/git-changelog-command-line/commit/ae022d2e2c3a5d6) Tomas Bjerre *2016-06-24 09:35:51* 1604 | 1605 | **Including commits from merges lib issue 49** 1606 | 1607 | 1608 | [c1227](https://github.com/tomasbjerre/git-changelog-command-line/commit/c1227c6120f9e28) Tomas Bjerre *2016-06-24 09:34:26* 1609 | 1610 | **Adding script to add bin to path** 1611 | 1612 | 1613 | [309b6](https://github.com/tomasbjerre/git-changelog-command-line/commit/309b65cbe000872) Tomas Bjerre *2016-06-20 19:18:51* 1614 | 1615 | **[Gradle Release Plugin] - new version commit: '1.24-SNAPSHOT'.** 1616 | 1617 | 1618 | [4c65f](https://github.com/tomasbjerre/git-changelog-command-line/commit/4c65f3a8c51dcc8) Tomas Bjerre *2016-06-02 18:32:14* 1619 | 1620 | 1621 | ## 1.23 (2016-06-02) 1622 | 1623 | ### Other changes 1624 | 1625 | **[Gradle Release Plugin] - pre tag commit: '1.23'.** 1626 | 1627 | 1628 | [9ef3d](https://github.com/tomasbjerre/git-changelog-command-line/commit/9ef3d96d057a786) Tomas Bjerre *2016-06-02 18:32:06* 1629 | 1630 | **Lib 1.49, finding first commit as parents from HEAD** 1631 | 1632 | 1633 | [6c28f](https://github.com/tomasbjerre/git-changelog-command-line/commit/6c28f9b5d5bc128) Tomas Bjerre *2016-06-02 18:29:53* 1634 | 1635 | **[Gradle Release Plugin] - new version commit: '1.23-SNAPSHOT'.** 1636 | 1637 | 1638 | [1366b](https://github.com/tomasbjerre/git-changelog-command-line/commit/1366b7b191e2000) Tomas Bjerre *2016-05-20 19:08:56* 1639 | 1640 | 1641 | ## 1.22 (2016-05-20) 1642 | 1643 | ### Other changes 1644 | 1645 | **[Gradle Release Plugin] - pre tag commit: '1.22'.** 1646 | 1647 | 1648 | [72b10](https://github.com/tomasbjerre/git-changelog-command-line/commit/72b1041e619d71b) Tomas Bjerre *2016-05-20 19:08:43* 1649 | 1650 | **Ignoring trailing slash in JIRA URL** 1651 | 1652 | 1653 | [4bd1a](https://github.com/tomasbjerre/git-changelog-command-line/commit/4bd1a4d3366768d) Tomas Bjerre *2016-05-20 19:07:37* 1654 | 1655 | **[Gradle Release Plugin] - new version commit: '1.22-SNAPSHOT'.** 1656 | 1657 | 1658 | [c282d](https://github.com/tomasbjerre/git-changelog-command-line/commit/c282dda45d3123b) Tomas Bjerre *2016-04-13 18:39:58* 1659 | 1660 | 1661 | ## 1.21 (2016-04-13) 1662 | 1663 | ### Other changes 1664 | 1665 | **[Gradle Release Plugin] - pre tag commit: '1.21'.** 1666 | 1667 | 1668 | [02410](https://github.com/tomasbjerre/git-changelog-command-line/commit/02410cd2db99481) Tomas Bjerre *2016-04-13 18:39:52* 1669 | 1670 | **Lib 1.45** 1671 | 1672 | 1673 | [88a91](https://github.com/tomasbjerre/git-changelog-command-line/commit/88a91833658029d) Tomas Bjerre *2016-04-13 18:38:43* 1674 | 1675 | **[Gradle Release Plugin] - new version commit: '1.21-SNAPSHOT'.** 1676 | 1677 | 1678 | [2a7e9](https://github.com/tomasbjerre/git-changelog-command-line/commit/2a7e9193f0508bf) Tomas Bjerre *2016-04-12 17:02:33* 1679 | 1680 | 1681 | ## 1.20 (2016-04-12) 1682 | 1683 | ### Other changes 1684 | 1685 | **[Gradle Release Plugin] - pre tag commit: '1.20'.** 1686 | 1687 | 1688 | [b8ed5](https://github.com/tomasbjerre/git-changelog-command-line/commit/b8ed522cad30e21) Tomas Bjerre *2016-04-12 17:02:24* 1689 | 1690 | **JENKINS-34155 Support short SHA** 1691 | 1692 | 1693 | [56fc1](https://github.com/tomasbjerre/git-changelog-command-line/commit/56fc1410ff6b872) Tomas Bjerre *2016-04-12 17:00:59* 1694 | 1695 | **doc** 1696 | 1697 | 1698 | [9e890](https://github.com/tomasbjerre/git-changelog-command-line/commit/9e890fb3151e1ec) Tomas Bjerre *2016-04-10 09:17:27* 1699 | 1700 | **[Gradle Release Plugin] - new version commit: '1.20-SNAPSHOT'.** 1701 | 1702 | 1703 | [cdd96](https://github.com/tomasbjerre/git-changelog-command-line/commit/cdd96b11c3b7425) Tomas Bjerre *2016-04-10 09:16:32* 1704 | 1705 | 1706 | ## 1.19 (2016-04-10) 1707 | 1708 | ### Other changes 1709 | 1710 | **[Gradle Release Plugin] - pre tag commit: '1.19'.** 1711 | 1712 | 1713 | [34762](https://github.com/tomasbjerre/git-changelog-command-line/commit/347629ac0f4e618) Tomas Bjerre *2016-04-10 09:16:26* 1714 | 1715 | **Lib 1.43, Parsing commits, oldest first** 1716 | 1717 | 1718 | [fec08](https://github.com/tomasbjerre/git-changelog-command-line/commit/fec08570ae03569) Tomas Bjerre *2016-04-10 09:15:29* 1719 | 1720 | **[Gradle Release Plugin] - new version commit: '1.19-SNAPSHOT'.** 1721 | 1722 | 1723 | [f0403](https://github.com/tomasbjerre/git-changelog-command-line/commit/f040317cecb1e4d) Tomas Bjerre *2016-04-10 09:05:35* 1724 | 1725 | 1726 | ## 1.18 (2016-04-10) 1727 | 1728 | ### Other changes 1729 | 1730 | **[Gradle Release Plugin] - pre tag commit: '1.18'.** 1731 | 1732 | 1733 | [c482f](https://github.com/tomasbjerre/git-changelog-command-line/commit/c482fa88c97da88) Tomas Bjerre *2016-04-10 09:05:29* 1734 | 1735 | **Lib 1.42, Parsing commits, oldest first** 1736 | 1737 | 1738 | [d3a83](https://github.com/tomasbjerre/git-changelog-command-line/commit/d3a83d8422b2c3f) Tomas Bjerre *2016-04-10 09:04:38* 1739 | 1740 | **[Gradle Release Plugin] - new version commit: '1.18-SNAPSHOT'.** 1741 | 1742 | 1743 | [13307](https://github.com/tomasbjerre/git-changelog-command-line/commit/13307747e37eec9) Tomas Bjerre *2016-04-09 20:43:52* 1744 | 1745 | 1746 | ## 1.17 (2016-04-09) 1747 | 1748 | ### Other changes 1749 | 1750 | **[Gradle Release Plugin] - pre tag commit: '1.17'.** 1751 | 1752 | 1753 | [f90a7](https://github.com/tomasbjerre/git-changelog-command-line/commit/f90a7fff5149e19) Tomas Bjerre *2016-04-09 20:43:45* 1754 | 1755 | **Lib 1.41, Commits added to correct tags** 1756 | 1757 | 1758 | [8865a](https://github.com/tomasbjerre/git-changelog-command-line/commit/8865a3af376eccc) Tomas Bjerre *2016-04-09 20:42:51* 1759 | 1760 | **[Gradle Release Plugin] - new version commit: '1.17-SNAPSHOT'.** 1761 | 1762 | 1763 | [e1789](https://github.com/tomasbjerre/git-changelog-command-line/commit/e1789c2e7a3941c) Tomas Bjerre *2016-04-07 18:53:53* 1764 | 1765 | 1766 | ## 1.16 (2016-04-07) 1767 | 1768 | ### Other changes 1769 | 1770 | **[Gradle Release Plugin] - pre tag commit: '1.16'.** 1771 | 1772 | 1773 | [3e9af](https://github.com/tomasbjerre/git-changelog-command-line/commit/3e9af4237007110) Tomas Bjerre *2016-04-07 18:53:44* 1774 | 1775 | **Lib 1.40 can ignore tags by regexp** 1776 | 1777 | 1778 | [24b1f](https://github.com/tomasbjerre/git-changelog-command-line/commit/24b1fd830d85fd2) Tomas Bjerre *2016-04-07 18:51:58* 1779 | 1780 | **[Gradle Release Plugin] - new version commit: '1.16-SNAPSHOT'.** 1781 | 1782 | 1783 | [7bfcd](https://github.com/tomasbjerre/git-changelog-command-line/commit/7bfcdb4185f779e) Tomas Bjerre *2016-03-20 09:51:31* 1784 | 1785 | 1786 | ## 1.15 (2016-03-20) 1787 | 1788 | ### Other changes 1789 | 1790 | **[Gradle Release Plugin] - pre tag commit: '1.15'.** 1791 | 1792 | 1793 | [8db56](https://github.com/tomasbjerre/git-changelog-command-line/commit/8db566e8fc72d7b) Tomas Bjerre *2016-03-20 09:51:25* 1794 | 1795 | **Lib 1.39** 1796 | 1797 | 1798 | [d843a](https://github.com/tomasbjerre/git-changelog-command-line/commit/d843ab2414be0e7) Tomas Bjerre *2016-03-20 09:50:01* 1799 | 1800 | **[Gradle Release Plugin] - new version commit: '1.15-SNAPSHOT'.** 1801 | 1802 | 1803 | [51128](https://github.com/tomasbjerre/git-changelog-command-line/commit/51128ad0c5629c4) Tomas Bjerre *2016-03-20 09:24:13* 1804 | 1805 | 1806 | ## 1.14 (2016-03-20) 1807 | 1808 | ### Other changes 1809 | 1810 | **[Gradle Release Plugin] - pre tag commit: '1.14'.** 1811 | 1812 | 1813 | [5d83c](https://github.com/tomasbjerre/git-changelog-command-line/commit/5d83c4e1ae2c317) Tomas Bjerre *2016-03-20 09:24:08* 1814 | 1815 | **Lib 1.38** 1816 | 1817 | 1818 | [f6371](https://github.com/tomasbjerre/git-changelog-command-line/commit/f6371e136d5fc22) Tomas Bjerre *2016-03-20 09:23:18* 1819 | 1820 | **[Gradle Release Plugin] - new version commit: '1.14-SNAPSHOT'.** 1821 | 1822 | 1823 | [1ab1f](https://github.com/tomasbjerre/git-changelog-command-line/commit/1ab1f58bd648cea) Tomas Bjerre *2016-03-15 20:35:29* 1824 | 1825 | 1826 | ## 1.13 (2016-03-15) 1827 | 1828 | ### Other changes 1829 | 1830 | **[Gradle Release Plugin] - pre tag commit: '1.13'.** 1831 | 1832 | 1833 | [29290](https://github.com/tomasbjerre/git-changelog-command-line/commit/292906ccf27eb24) Tomas Bjerre *2016-03-15 20:35:21* 1834 | 1835 | **Lib 1.36** 1836 | 1837 | 1838 | [12a6c](https://github.com/tomasbjerre/git-changelog-command-line/commit/12a6c079e7103bc) Tomas Bjerre *2016-03-15 20:31:47* 1839 | 1840 | **[Gradle Release Plugin] - new version commit: '1.13-SNAPSHOT'.** 1841 | 1842 | 1843 | [818db](https://github.com/tomasbjerre/git-changelog-command-line/commit/818dbfc96555fd7) Tomas Bjerre *2016-03-15 20:17:13* 1844 | 1845 | 1846 | ## 1.12 (2016-03-15) 1847 | 1848 | ### Other changes 1849 | 1850 | **[Gradle Release Plugin] - pre tag commit: '1.12'.** 1851 | 1852 | 1853 | [e2812](https://github.com/tomasbjerre/git-changelog-command-line/commit/e2812561fc6a829) Tomas Bjerre *2016-03-15 20:16:21* 1854 | 1855 | **Lib 1.35** 1856 | 1857 | 1858 | [701ea](https://github.com/tomasbjerre/git-changelog-command-line/commit/701ea9325b6c45c) Tomas Bjerre *2016-03-15 20:14:46* 1859 | 1860 | **[Gradle Release Plugin] - new version commit: '1.12-SNAPSHOT'.** 1861 | 1862 | 1863 | [1cd6e](https://github.com/tomasbjerre/git-changelog-command-line/commit/1cd6ef473f35d0e) Tomas Bjerre *2016-03-15 19:20:13* 1864 | 1865 | 1866 | ## 1.11 (2016-03-15) 1867 | 1868 | ### Other changes 1869 | 1870 | **[Gradle Release Plugin] - pre tag commit: '1.11'.** 1871 | 1872 | 1873 | [e17a1](https://github.com/tomasbjerre/git-changelog-command-line/commit/e17a1c3a1e62696) Tomas Bjerre *2016-03-15 19:20:04* 1874 | 1875 | **Support GitHub OAuth2 tokens #1** 1876 | 1877 | 1878 | [7b5e9](https://github.com/tomasbjerre/git-changelog-command-line/commit/7b5e98122110337) Tomas Bjerre *2016-03-15 19:17:11* 1879 | 1880 | **[Gradle Release Plugin] - new version commit: '1.11-SNAPSHOT'.** 1881 | 1882 | 1883 | [952ee](https://github.com/tomasbjerre/git-changelog-command-line/commit/952eeab209c5a98) Tomas Bjerre *2016-02-20 08:18:43* 1884 | 1885 | 1886 | ## 1.10 (2016-02-20) 1887 | 1888 | ### Other changes 1889 | 1890 | **[Gradle Release Plugin] - pre tag commit: '1.10'.** 1891 | 1892 | 1893 | [28754](https://github.com/tomasbjerre/git-changelog-command-line/commit/287544cbbb57174) Tomas Bjerre *2016-02-20 08:18:26* 1894 | 1895 | **Supplying commit in each issue mentioned in message** 1896 | 1897 | 1898 | [67b99](https://github.com/tomasbjerre/git-changelog-command-line/commit/67b997695bfe797) Tomas Bjerre *2016-02-20 08:17:23* 1899 | 1900 | **Updating CHANGELOG.md** 1901 | 1902 | 1903 | [0f1d6](https://github.com/tomasbjerre/git-changelog-command-line/commit/0f1d69f8049ffb7) Tomas Bjerre *2016-02-15 18:11:25* 1904 | 1905 | **[Gradle Release Plugin] - new version commit: '1.10-SNAPSHOT'.** 1906 | 1907 | 1908 | [44b28](https://github.com/tomasbjerre/git-changelog-command-line/commit/44b281aa295bc00) Tomas Bjerre *2016-02-15 18:10:12* 1909 | 1910 | 1911 | ## 1.9 (2016-02-15) 1912 | 1913 | ### Other changes 1914 | 1915 | **[Gradle Release Plugin] - pre tag commit: '1.9'.** 1916 | 1917 | 1918 | [d53fa](https://github.com/tomasbjerre/git-changelog-command-line/commit/d53faee0eb31aba) Tomas Bjerre *2016-02-15 18:09:59* 1919 | 1920 | **Lib 1.30, supporting multiple tags on same commit** 1921 | 1922 | 1923 | [444d5](https://github.com/tomasbjerre/git-changelog-command-line/commit/444d5d850a7490a) Tomas Bjerre *2016-02-15 18:08:12* 1924 | 1925 | **Updating CHANGELOG.md** 1926 | 1927 | 1928 | [cd1b7](https://github.com/tomasbjerre/git-changelog-command-line/commit/cd1b774623fff9a) Tomas Bjerre *2016-02-14 17:56:12* 1929 | 1930 | **[Gradle Release Plugin] - new version commit: '1.9-SNAPSHOT'.** 1931 | 1932 | 1933 | [e419c](https://github.com/tomasbjerre/git-changelog-command-line/commit/e419c230b0dd81c) Tomas Bjerre *2016-02-14 17:54:45* 1934 | 1935 | 1936 | ## 1.8 (2016-02-14) 1937 | 1938 | ### Other changes 1939 | 1940 | **[Gradle Release Plugin] - pre tag commit: '1.8'.** 1941 | 1942 | 1943 | [085cf](https://github.com/tomasbjerre/git-changelog-command-line/commit/085cf2d6d39781a) Tomas Bjerre *2016-02-14 17:54:08* 1944 | 1945 | **Lib 1.29** 1946 | 1947 | 1948 | [f6935](https://github.com/tomasbjerre/git-changelog-command-line/commit/f69357fac63ae1a) Tomas Bjerre *2016-02-14 17:42:33* 1949 | 1950 | **[Gradle Release Plugin] - new version commit: '1.8-SNAPSHOT'.** 1951 | 1952 | 1953 | [2e5ab](https://github.com/tomasbjerre/git-changelog-command-line/commit/2e5abc160008157) Tomas Bjerre *2016-02-14 16:54:48* 1954 | 1955 | 1956 | ## 1.7 (2016-02-14) 1957 | 1958 | ### Other changes 1959 | 1960 | **[Gradle Release Plugin] - pre tag commit: '1.7'.** 1961 | 1962 | 1963 | [b40a7](https://github.com/tomasbjerre/git-changelog-command-line/commit/b40a7347d30295a) Tomas Bjerre *2016-02-14 16:54:41* 1964 | 1965 | **Lib 1.28, performance optimizations** 1966 | 1967 | 1968 | [e8230](https://github.com/tomasbjerre/git-changelog-command-line/commit/e8230ac1b0ec6be) Tomas Bjerre *2016-02-14 16:52:59* 1969 | 1970 | **[Gradle Release Plugin] - new version commit: '1.7-SNAPSHOT'.** 1971 | 1972 | 1973 | [b85c5](https://github.com/tomasbjerre/git-changelog-command-line/commit/b85c581ca42ab09) Tomas Bjerre *2016-02-13 09:08:36* 1974 | 1975 | 1976 | ## 1.6 (2016-02-13) 1977 | 1978 | ### Other changes 1979 | 1980 | **[Gradle Release Plugin] - pre tag commit: '1.6'.** 1981 | 1982 | 1983 | [8e674](https://github.com/tomasbjerre/git-changelog-command-line/commit/8e67437e7df1416) Tomas Bjerre *2016-02-13 09:08:29* 1984 | 1985 | **Significant performance improvements** 1986 | 1987 | * Using lib 1.27. 1988 | 1989 | [d2cf1](https://github.com/tomasbjerre/git-changelog-command-line/commit/d2cf164af5d00c6) Tomas Bjerre *2016-02-13 09:00:47* 1990 | 1991 | **[Gradle Release Plugin] - new version commit: '1.6-SNAPSHOT'.** 1992 | 1993 | 1994 | [5dc09](https://github.com/tomasbjerre/git-changelog-command-line/commit/5dc0984b7977f9a) Tomas Bjerre *2016-02-10 18:32:32* 1995 | 1996 | 1997 | ## 1.5 (2016-02-10) 1998 | 1999 | ### Other changes 2000 | 2001 | **[Gradle Release Plugin] - pre tag commit: '1.5'.** 2002 | 2003 | 2004 | [824d0](https://github.com/tomasbjerre/git-changelog-command-line/commit/824d0df90ec7bd3) Tomas Bjerre *2016-02-10 18:32:22* 2005 | 2006 | **Updating README.md** 2007 | 2008 | 2009 | [77337](https://github.com/tomasbjerre/git-changelog-command-line/commit/773372ae5c8c640) Tomas Bjerre *2016-02-10 18:28:06* 2010 | 2011 | **Git changelog lib 1.25** 2012 | 2013 | 2014 | [23773](https://github.com/tomasbjerre/git-changelog-command-line/commit/23773c4f53f1a4c) Tomas Bjerre *2016-02-10 18:27:25* 2015 | 2016 | **[Gradle Release Plugin] - new version commit: '1.5-SNAPSHOT'.** 2017 | 2018 | 2019 | [c13de](https://github.com/tomasbjerre/git-changelog-command-line/commit/c13ded98ca54afe) Tomas Bjerre *2016-02-09 19:40:18* 2020 | 2021 | 2022 | ## 1.4 (2016-02-09) 2023 | 2024 | ### Other changes 2025 | 2026 | **[Gradle Release Plugin] - pre tag commit: '1.4'.** 2027 | 2028 | 2029 | [59233](https://github.com/tomasbjerre/git-changelog-command-line/commit/59233bb8cd16e87) Tomas Bjerre *2016-02-09 19:40:03* 2030 | 2031 | **Added variables: messageTitle, messageBody, messageItems #5** 2032 | 2033 | 2034 | [13c62](https://github.com/tomasbjerre/git-changelog-command-line/commit/13c62bbb0784d0a) Tomas Bjerre *2016-02-09 19:38:44* 2035 | 2036 | **Updating CHANGELOG.md** 2037 | 2038 | 2039 | [49644](https://github.com/tomasbjerre/git-changelog-command-line/commit/496444b04e46ff6) Tomas Bjerre *2016-02-03 19:45:06* 2040 | 2041 | **[Gradle Release Plugin] - new version commit: '1.4-SNAPSHOT'.** 2042 | 2043 | 2044 | [f469c](https://github.com/tomasbjerre/git-changelog-command-line/commit/f469c8cfd6434c6) Tomas Bjerre *2016-02-03 17:36:40* 2045 | 2046 | 2047 | ## 1.3 (2016-02-03) 2048 | 2049 | ### Other changes 2050 | 2051 | **[Gradle Release Plugin] - pre tag commit: '1.3'.** 2052 | 2053 | 2054 | [58ed3](https://github.com/tomasbjerre/git-changelog-command-line/commit/58ed32765ff2c03) Tomas Bjerre *2016-02-03 17:36:33* 2055 | 2056 | **Adding -tec and -ex** 2057 | 2058 | * -tec enables specifying template content on command line. 2059 | * -ex enables extended variables to be added from command line. Like -ex "{\"var1\": \"val1\"}". 2060 | 2061 | [79ebe](https://github.com/tomasbjerre/git-changelog-command-line/commit/79ebeca10883ed8) Tomas Bjerre *2016-02-03 17:32:18* 2062 | 2063 | **Doc** 2064 | 2065 | 2066 | [3d282](https://github.com/tomasbjerre/git-changelog-command-line/commit/3d282e2d8bc6335) Tomas Bjerre *2016-01-31 21:26:10* 2067 | 2068 | **Maven Central version badge in README.md** 2069 | 2070 | 2071 | [2717b](https://github.com/tomasbjerre/git-changelog-command-line/commit/2717b408666b574) Tomas Bjerre *2016-01-31 21:15:58* 2072 | 2073 | **[Gradle Release Plugin] - new version commit: '1.3-SNAPSHOT'.** 2074 | 2075 | 2076 | [cf289](https://github.com/tomasbjerre/git-changelog-command-line/commit/cf28933a83d1dd3) Tomas Bjerre *2016-01-31 11:22:49* 2077 | 2078 | 2079 | ## 1.2 (2016-01-31) 2080 | 2081 | ### Other changes 2082 | 2083 | **[Gradle Release Plugin] - pre tag commit: '1.2'.** 2084 | 2085 | 2086 | [3521d](https://github.com/tomasbjerre/git-changelog-command-line/commit/3521d3f12b5bb2b) Tomas Bjerre *2016-01-31 11:22:31* 2087 | 2088 | **Using lib 1.23** 2089 | 2090 | 2091 | [6ddc2](https://github.com/tomasbjerre/git-changelog-command-line/commit/6ddc200752f4c06) Tomas Bjerre *2016-01-31 11:21:12* 2092 | 2093 | **[Gradle Release Plugin] - new version commit: '1.2-SNAPSHOT'.** 2094 | 2095 | 2096 | [fe78d](https://github.com/tomasbjerre/git-changelog-command-line/commit/fe78d8a42f1f69e) Tomas Bjerre *2016-01-30 17:26:47* 2097 | 2098 | 2099 | ## 1.1 (2016-01-30) 2100 | 2101 | ### Other changes 2102 | 2103 | **[Gradle Release Plugin] - pre tag commit: '1.1'.** 2104 | 2105 | 2106 | [f3559](https://github.com/tomasbjerre/git-changelog-command-line/commit/f3559f460def607) Tomas Bjerre *2016-01-30 17:26:40* 2107 | 2108 | **Lib 1.22 and test cases** 2109 | 2110 | 2111 | [c66ea](https://github.com/tomasbjerre/git-changelog-command-line/commit/c66eae3ba424076) Tomas Bjerre *2016-01-30 17:23:15* 2112 | 2113 | **Updating CHANGELOG.md** 2114 | 2115 | * And correcting link to Maven Central 2116 | 2117 | [e7113](https://github.com/tomasbjerre/git-changelog-command-line/commit/e711322ff826053) Tomas Bjerre *2016-01-28 18:17:38* 2118 | 2119 | **[Gradle Release Plugin] - new version commit: '1.1-SNAPSHOT'.** 2120 | 2121 | 2122 | [224ca](https://github.com/tomasbjerre/git-changelog-command-line/commit/224cad580426bc0) Tomas Bjerre *2016-01-27 18:33:30* 2123 | 2124 | 2125 | ## 1.0 (2016-01-27) 2126 | 2127 | ### Other changes 2128 | 2129 | **[Gradle Release Plugin] - pre tag commit: '1.0'.** 2130 | 2131 | 2132 | [e2de1](https://github.com/tomasbjerre/git-changelog-command-line/commit/e2de13986c17486) Tomas Bjerre *2016-01-27 18:33:02* 2133 | 2134 | **Initial commit** 2135 | 2136 | 2137 | [3dd00](https://github.com/tomasbjerre/git-changelog-command-line/commit/3dd0012f113ba82) Tomas Bjerre *2016-01-27 18:29:52* 2138 | 2139 | 2140 | --------------------------------------------------------------------------------