git-dch(1) Generate the Debian changelog from git commit messages


git-dch [ --verbose ] [ --debian-branch=branch_name ] [ --debian-tag=tag-format ] [ --ignore-branch ] [ --since=commitish ] [ --snapshot ] [ --release ] [ --auto ] [ --[no-]full ] [ --[no-]meta ] [ --meta-closes=bug-close-tags ] [ --snapshot-number=expression ] [ --git-log=git-log-options ] [ --[no-]git-author ] [ --[no-]multimaint-merge ] [path1 path2]


git-dch reads git commit messages and generates the Debian changelog from it. If no arguments are given git-dch starts from the last tagged Debian package version up to the current tip of the current branch. If the distribution of the topmost section in debian/changelog is UNRELEASED the changelog entries will be inserted into this section. Otherwise a new section will be created.

If --auto is given git-dch tries to guess the last Git commit documented in the changelog - this only works in snapshot mode. Otherwise --since can be used to tell git-dch at which point it should start in the Git history.

The additional path arguments can be used to restrict the repository paths git-dch looks at. Setting path to debian/ is a good choice if upstream uses Git and all Debian packaging changes are restricted to the debian/ subdir. In more sophisticated cases (like backports) you can use --git-log to restrict the generated changelog entries further. E.g. by using --git-log="--author=Foo Bar".


The branch in the Git repository the Debian package is being developed on, default is master.
Don't check if the current branch matches debian-branch.
verbose execution
tag format used, when tagging debian versions, default is debian/<version>
Start reading commit messages at committish.
--auto, -a
Guess the last commit documented in the changelog from the snapshot banner (or from the last tag if no snapshot banner exists).
Parse meta tags like Closes:, Thanks: and Git-Dch:.
What meta tags to look for to generate bug-closing changelog entries. The default is 'Closes|LP' to support Debian and Launchpad.
Include the full commit message in the changelog output.
--snapshot, -S
Create a snapshot release entry. This adds a snapshot release number and a warning banner to the changelog entry. The release version number is being autoincremented with every new snapshot release to avoid packages downgrades during snapshot testing.
Python expression that gets eval()ed to the new snapshot number.
--release, -R
Remove any snapshot release banners and version suffixes, set the current distribution to unstable and open the changelog for final tweaking.
--new-version=version, -N version
Add a new changelog section with version newversion. Together with --snapshot the snapshot number will be appended to newversion.
Options passed on verbatim to git-log(1).
Include N digits of the commit id in the changelog entry. Default is to not include any commit ids at all.
Ignore commit lines matching regex when generating the changelog.
Use and from git-config(1) for changelog trailer.
Merge commits by maintainer.


Snapshot mode can be used for quick test and install cycles without having to worry about version numbers or changelog entries.

When using --snapshot or -S git-dch uses a pseudo header in the Debian changelog to remember the last git commit it added a changelog entry for. It also sets a version number ending in ~<snaspshotnumber>.gbp<commitid>. It automatically increments the snapshot number on subsequent invocations of git-dch -S so that later snapshots automatically have a higher version number. To leave snapshot mode invoke git-dch with the --release option. This removes the pseudo heaader and unmangles the version number so the released version has a higher version number than the snapshots.


Four configuration files are parsed to set defaults for the above commandline arguments:

system wide configuraton
per user configuration
per branch configuration, can be published with the repository
per branch configuration, can be published with the repository
per repository configuration

See /etc/git-buildpackage/gbp.conf for an example.


Guido Guenther <[email protected]>