Simple python script to generate debian changelog file from git commits history
Go to file
Benjamin Renard 1f2ae28cf0
ci/woodpecker/push/woodpecker Pipeline was successful Details
ci/woodpecker/tag/woodpecker Pipeline was successful Details
Try to auto-detect revision in append mode if not specified
2022-12-13 10:45:28 +01:00
debian CI: Add publishing (gitea version & debian package) 2022-05-01 01:23:05 +02:00
.gitignore CI: Add publishing (gitea version & debian package) 2022-05-01 01:23:05 +02:00
.pylintrc Restore compatibility with python 3.5 2022-11-24 11:09:41 +01:00
.woodpecker.yml CI: use brenard/aptly-publish image for publish-apt job 2022-08-01 23:16:12 +02:00 Update usage in 2022-12-12 19:47:47 +01:00 exclude CI,, and merge related commits generating debian changelog 2022-12-12 19:51:41 +01:00
gitdch Try to auto-detect revision in append mode if not specified 2022-12-13 10:45:28 +01:00


Simple python script using GitPython library to generate debian changelog file from git commit history. Each existing tags is considered as a release version and current working version is numbered using ''git describe --always --tags'' command.



apt install git python3-git

Using git

git clone /usr/local/src/gitdch
ln -s /usr/local/src/gitdch/gitdch /usr/local/bin/gitdch

Using wget

wget -O /usr/local/bin/gitdch
chmod +x /usr/local/bin/gitdch

Using curl

curl -o /usr/local/bin/gitdch
chmod +x /usr/local/bin/gitdch


usage: gitdch [-h] [-d] [-v] [-w] [-l LOGFILE] [-q] [-p GIT_PATH] [-o OUTPUT] [-A]
              [-n PACKAGE_NAME] [-V VERSION] [--version-suffix VERSION_SUFFIX]
              [-R RELEASE_NOTES] [--revision REVISION] [-C CLEAN_TAGS_REGEX]
              [-x EXCLUDE]

Generate Debian package changelog from git (version: 0.0)

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Show debug messages
  -v, --verbose         Show verbose messages
  -w, --warning         Show warning messages
  -l LOGFILE, --log-file LOGFILE
                        Log file path
  -q, --quiet           Quiet mode: do not log on console (only if log file is
  -p GIT_PATH, --path GIT_PATH
                        Git repository path (default: ./)
  -o OUTPUT, --output OUTPUT
                        Generated Debian changelog output path (default: stdout)
  -A, --append          Append mode: if the output changelog file already exists,
                        append generated changelog lines at the begining of the file
                        (optional, default: overwriting the file)
  -n PACKAGE_NAME, --package-name PACKAGE_NAME
                        Package name
  -V VERSION, --version VERSION
                        Currrent version (default: autodetected using git describe
                        --always --tags)
  --version-suffix VERSION_SUFFIX
                        Suffix for autodetected version
  -c CODE_NAME, --code-name CODE_NAME
                        Debian code name (default: unstable)
  -u URGENCY, --urgency URGENCY
                        Package urgency (default: medium)
                        Maintainer name (default: last commit author name)
                        Maintainer email (default: last commit author email)
                        Specify an optional Markdown release notes output path
  --revision REVISION   Specify the revision to use to generate the changelog (see
                        git-rev-parse for viable options, optional, default:
                        generate the changelog with all commits of the current
  -C CLEAN_TAGS_REGEX, --clean-tags-regex CLEAN_TAGS_REGEX
                        Clean tags regex: you could specify regex to clean tag names
                        when computing package versions. For instance, to drop a
                        "-eeXXX" suffix of tag names, specify -C "\-ee[0-9]{3}$"
                        (optional, multiple regex allowed)
  -x EXCLUDE, --exclude EXCLUDE
                        Commit exclusion regex: you could specify regex to exclude
                        some commits from generated changelog entries. For instance,
                        to exclude commits with message starting with "CI: ",
                        specify -x "^CI: " (optional, multiple regex allowed)

Copyright (c) 2013-2022 Benjamin Renard


This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.